原地址: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 看不到效果