自定义视图圆角 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 看到的下面的是链接地址
点击这里

上一篇下一篇

猜你喜欢

热点阅读