有时候需要给view添加一个圆角,我们常用的方法是
view.layer.cornerRadius = 10.0
但是它是给view的四个角都添加了圆角。想在想办法给view的任意一个角都可以添加圆角。 最简单的方法就是用CAShapeLayer了,可以用它在view上添加一个mask来实现。
首先,我们给UIView扩展一个方法,这样所有的view都可以共用了。类似于下面
extension UIView {
func addCorner(){
}
}
一般添加圆角都是使用这个方法:
init(roundedRect rect: CGRect, byRoundingCorners corners: UIRectCorner, cornerRadii: CGSize) -> UIBezierPath
所以我们可以通过corners来控制改变哪个角,用cornerRadii来控制圆角的大小。完善方法后:
extension UIView {
func addCorner(roundingCorners: UIRectCorner, cornerSize: CGSize) {
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: roundingCorners, cornerRadii: cornerSize)
let cornerLayer = CAShapeLayer()
cornerLayer.frame = bounds
cornerLayer.path = path.CGPath
layer.mask = cornerLayer
}
}
测试:改变button下面两个角为圆角
let button = UIButton(frame: CGRectMake(40, 40, 300, 80))
button.backgroundColor = UIColor.redColor()
button.setTitle("Click", forState: UIControlState.Normal)
view.addSubview(button)
button.addCorner(UIRectCorner.BottomLeft | UIRectCorner.BottomRight, cornerSize: CGSizeMake(20, 20))
结果如图: