UIView給我提供了很方便的設置圓角的方法。
view.layer.cornerRadius = 5
就可以將View四個角的都設置成圓角。
有時候我們有更高級點的需求,比如將 view 的某一個角設置為圓角,這時候我們發(fā)現(xiàn),剛才的方法是不適用的。解決不了問題。
下面我將介紹給你新的方法
首先我們會用到 UIBezierPath
public convenience init(roundedRect rect: CGRect, byRoundingCorners corners: UIRectCorner, cornerRadii: CGSize)
這是創(chuàng)建一個帶有圓角的path。 path 的圓角屬性通過 corners 和 cornerRadii 來聲明.
corner 聲明視圖的四個角當中哪幾個角為圓角
cornerRadii 來聲明圓角的弧度
let maskPath = UIBezierPath.init(roundedRect: backImage.bounds, byRoundingCorners: UIRectCorner.topLeft.union(UIRectCorner.topRight), cornerRadii: CGSize(width: 15, height: 15))
然后創(chuàng)建一個 CALayer, CALayer 的 path 屬性設置為 maskPath。
let maskLayer = CAShapeLayer.init()
maskLayer.frame = backImage.bounds;
maskLayer.path = maskPath.cgPath;
最后將 view.layer.mask 設置為 maskLayer
backImage.layer.mask = maskLayer;
在這里需要提醒的是,使用純代碼創(chuàng)建和使用 constraint 約束來創(chuàng)建的視圖。添加CALayer的時機不同。
自己去嘗試吧。情況很多,有很多坑。
這里的方法是我在 StackOverFlow 看到的下面的是鏈接地址
點擊這里