自定義視圖圓角 corner radius

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 看到的下面的是鏈接地址
點擊這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載:http://www.itdecent.cn/p/32fcadd12108 每個UIView有一個伙伴稱為l...
    F麥子閱讀 6,584評論 0 13
  • 每個UIView有一個伙伴稱為layer,一個CALayer。UIView實際上并沒有把自己畫到屏幕上;它繪制本身...
    shenzhenboy閱讀 3,256評論 0 17
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,694評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,270評論 5 13
  • Core Animation其實是一個令人誤解的命名。你可能認為它只是用來做動畫的,但實際上它是從一個叫做Laye...
    小貓仔閱讀 3,967評論 1 4

友情鏈接更多精彩內(nèi)容