Szybki
Krótka odpowiedź:
myView.layer.cornerRadius = 8
myView.layer.masksToBounds = true // optional
Dodatkowa odpowiedź
Jeśli doszedłeś do tej odpowiedzi, prawdopodobnie już widziałeś wystarczająco dużo, aby rozwiązać swój problem. Dodaję tę odpowiedź, aby dać trochę więcej wizualnego wyjaśnienia, dlaczego rzeczy robią to, co robią.
Jeśli zaczynasz od zwykłego UIView
, ma kwadratowe rogi.
let blueView = UIView()
blueView.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
blueView.backgroundColor = UIColor.blueColor()
view.addSubview(blueView)
Możesz nadawać mu zaokrąglone rogi, zmieniając cornerRadius
właściwość widoku layer
.
blueView.layer.cornerRadius = 8
Większe wartości promienia dają bardziej zaokrąglone rogi
blueView.layer.cornerRadius = 25
a mniejsze wartości dają mniej zaokrąglone rogi.
blueView.layer.cornerRadius = 3
To może wystarczyć, aby rozwiązać problem właśnie tam. Czasami jednak widok może mieć widok podrzędny lub podwarstwę, która wykracza poza granice widoku. Na przykład, gdybym dodać sub widok takiego
let mySubView = UIView()
mySubView.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubView.backgroundColor = UIColor.redColor()
blueView.addSubview(mySubView)
lub jeśli było dodać sub warstwę takiego
let mySubLayer = CALayer()
mySubLayer.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubLayer.backgroundColor = UIColor.redColor().CGColor
blueView.layer.addSublayer(mySubLayer)
Wtedy skończyłbym z
Teraz, jeśli nie chcę, żeby rzeczy wisiały poza granicami, mogę to zrobić
blueView.clipsToBounds = true
albo to
blueView.layer.masksToBounds = true
co daje ten wynik:
Zarówno clipsToBounds
i masksToBounds
są równoważne . Po prostu pierwszy jest używany z UIView
drugim, a drugi zCALayer
.
Zobacz też