天天看点

iOS编程——Swift用代码为view添加各种圆角

有时候需要给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))
           

结果如图:

iOS编程——Swift用代码为view添加各种圆角