自定义视图圆角 corner radius
2017-02-22 本文已影响42人
GeorgeCharles
UIView给我提供了很方便的设置圆角的方法。
view.layer.cornerRadius = 5
就可以将View四个角的都设置成圆角。
有时候我们有更高级点的需求,比如将 view 的某一个角设置为圆角,这时候我们发现,刚才的方法是不适用的。解决不了问题。
下面我将介绍给你新的方法
首先我们会用到 UIBezierPath
public convenience init(roundedRect rect: CGRect, byRoundingCorners corners: UIRectCorner, cornerRadii: CGSize)
这是创建一个带有圆角的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))
然后创建一个 CALayer, CALayer 的 path 属性设置为 maskPath。
let maskLayer = CAShapeLayer.init()
maskLayer.frame = backImage.bounds;
maskLayer.path = maskPath.cgPath;
最后将 view.layer.mask 设置为 maskLayer
backImage.layer.mask = maskLayer;
在这里需要提醒的是,使用纯代码创建和使用 constraint 约束来创建的视图。添加CALayer的时机不同。
自己去尝试吧。情况很多,有很多坑。
这里的方法是我在 StackOverFlow 看到的下面的是链接地址
点击这里