自定义视图圆角 corner radius

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 看到的下面的是链接地址
点击这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 6,529评论 0 13
  • 每个UIView有一个伙伴称为layer,一个CALayer。UIView实际上并没有把自己画到屏幕上;它绘制本身...
    shenzhenboy阅读 3,224评论 0 17
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,673评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,242评论 5 13
  • Core Animation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一个叫做Laye...
    小猫仔阅读 3,922评论 1 4

友情链接更多精彩内容