swift View添加部分圓角不顯示

原地址:http://www.lxweimin.com/p/2b939f53debf

extension UIView{
    public  func extSetPartCornerRadiusHan(byRoundingCorners corners: UIRectCorner, radii: CGFloat) {
        let maskPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize.init(width: radii, height: radii))
        let maskLayer = CAShapeLayer()
        maskLayer.frame = self.bounds
        maskLayer.path = maskPath.cgPath
        self.layer.mask = maskLayer
    }
}

注意: 添加圓角的View如果是用約束做的布局,那么在VC里面在viewDidLayoutSubviews函數下調用

 override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        self.firstView.extSetPartCornerRadiusHan(byRoundingCorners: [UIRectCorner.bottomLeft,UIRectCorner.bottomRight], radii: 10)
    }

在View里面添加在這個函數下面

override func layoutSubviews() {
        super.layoutSubviews()
    }

原因: 用約束去做布局,視圖的frame 和 bounds 不會立刻繪制,所以 width height 是0 看不到效果

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容