Nhanh
Câu trả lời ngắn:
myView.layer.cornerRadius = 8
myView.layer.masksToBounds = true // optional
Bổ sung trả lời
Nếu bạn đã đi đến câu trả lời này, có lẽ bạn đã thấy đủ để giải quyết vấn đề của mình. Tôi đang thêm câu trả lời này để đưa ra một lời giải thích trực quan hơn một chút về lý do tại sao mọi thứ làm những gì họ làm.
Nếu bạn bắt đầu với một thường xuyên, UIView
nó có góc vuông.
let blueView = UIView()
blueView.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
blueView.backgroundColor = UIColor.blueColor()
view.addSubview(blueView)
Bạn có thể cung cấp cho nó các góc tròn bằng cách thay đổi thuộc cornerRadius
tính của chế độ xem layer
.
blueView.layer.cornerRadius = 8
Giá trị bán kính lớn hơn cho các góc tròn hơn
blueView.layer.cornerRadius = 25
và các giá trị nhỏ hơn cho các góc tròn ít hơn.
blueView.layer.cornerRadius = 3
Điều này có thể đủ để giải quyết vấn đề của bạn ngay tại đó. Tuy nhiên, đôi khi một khung nhìn có thể có một khung nhìn phụ hoặc một lớp con đi ra ngoài giới hạn của khung nhìn. Ví dụ: nếu tôi thêm một chế độ xem phụ như thế này
let mySubView = UIView()
mySubView.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubView.backgroundColor = UIColor.redColor()
blueView.addSubview(mySubView)
hoặc nếu tôi thêm một lớp con như thế này
let mySubLayer = CALayer()
mySubLayer.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubLayer.backgroundColor = UIColor.redColor().CGColor
blueView.layer.addSublayer(mySubLayer)
Sau đó tôi sẽ kết thúc với
Bây giờ, nếu tôi không muốn mọi thứ treo ngoài giới hạn, tôi có thể làm điều này
blueView.clipsToBounds = true
hoặc cái này
blueView.layer.masksToBounds = true
đưa ra kết quả này:
Cả hai clipsToBounds
và masksToBounds
đều tương đương . Nó chỉ là cái đầu tiên được sử dụng với UIView
và thứ hai được sử dụng với CALayer
.
Xem thêm