天天看點

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添加各種圓角