android 4.1.2不支持圆角矩形,Swift4.1 一个轻量级给UIView设置圆角的分类

效果图:

987457-3a3aa0a7f10380ca.gif

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的选中状态,需要自己处理setSelected和setHighlighted方法,可以参考demo建议使用cell.selectionStyle = .none

声明:本文参考了wazrx

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值