Swift4.1 一个轻量级给UIView设置圆角的分类

效果图:
demo.gif

实现原理:

UIView的最上层绘制一张相应的遮罩图片,图片的背景只要保证和view的父视图背景色一样,就能达到圆角的效果
换句话说,类似让设计师设计一张中间镂空的圆形图片,遮盖住原来图片上方

实现功能

  • 带有border的圆角
  • 可设置圆角位置[.topLeft,.topRight]
  • 可给矩形设置圆角
  • 可动态修改圆角颜色

亮点

  • API非常简洁
  • 基本不掉帧,6s真机测试非常流畅
  • 使用NSCache,对生成的图片进行了缓存,避免重复生成

API

///  设置一个带边框的圆角
///
/// - Parameters:
///   - radius: 圆角半径
///   - cornerColor: 圆角背景色
///   - corners: 圆角位置
///   - borderColor: 边框颜色
///   - borderWidth: 边框线宽
func roundCorner(radii: CGSize,cornerColor: UIColor, corners: UIRectCorner, borderColor: UIColor, borderWidth: CGFloat)  {
    self.layer.dx_roundCorner(cornerRadii: radii, cornerColor: cornerColor, corners: corners, borderColor: borderColor, borderWidth: borderWidth)
}

使用示例

// 注意:非正方形,四角圆形需要用[.topLeft,.topRight, .bottomRight, .bottomLeft]
// 而不是用UIRectCorner.allCorners
label.dx.roundCorner(radius: 20/2, cornerColor: UIColor.white,corners: [.topLeft,.topRight, .bottomRight, .bottomLeft])

// 给UIView
headView.dx.roundCorner(radii: CGSize.init(width: 35, height: 35), cornerColor: UIColor.white, corners: .allCorners, borderColor: UIColor.red, borderWidth: 2)

使用注意:

  • 1.非正方形,四角圆形需要用[.topLeft,.topRight, .bottomRight, .bottomLeft]
  • 2.如果使用了nib文件,圆角无效,需要设置layer.masksToBounds = true
  • 3.如果需要显示tableView的选中状态,需要自己处理setSelectedsetHighlighted方法,可以参考demo建议使用cell.selectionStyle = .none

github下载地址

声明:本文参考了wazrx
iOS一个简单的设置圆角不引起性能问题的分类在Objective-C版本上实现了Swift版本

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

推荐阅读更多精彩内容

  • 文/秋思说财 该文为原创文章,如需转载,请与本人联系,未经授权不得转载。 最近在喜马拉雅听书,书名为《幸福的方法》...
    秋思说阅读 3,038评论 0 4
  • 信念就在一瞬间 5:45闹铃想了之后,自己脑袋里就在打架!要不要起,要不要6:00再起。不过,忽然一句话就在大脑中...
    赵扬帆阅读 988评论 0 0
  • 《你一年的8760小时》看到一半,艾力确实是个自控力极强的人。 精确地计算每半小时的使用,并坚持总结,于我而言,难...
    圆柱体阅读 2,761评论 0 0
  • 1.我的第一步 我从小就喜欢写东西,从小学到高中毕业,我的作文一直被语文老师当做写的好的例子。我偏科严重,语文的分...
    阎浮小学僧阅读 3,247评论 20 9
  • 随着时代的进步,教育不断的改革,英语早就走进了小学课堂。根据2014年国家教育部重新修订和颁布的《英语课程标准...
    雨佳姐姐阅读 1,423评论 0 0