ios开发框架封装(八):UIView拓展,实现【部分圆角、边框、阴影、背景色渐变】随意组合共存
- 实现代码在
UIViewExt.swift文件,这个类文件中实现的方法,在所有 UIView 的子类上都可用,如UIView、UILabel、UIButton、UITableView................
- 使用示例在
UIViewExtShow.m、UIViewExtShow.swift 文件
Layer处理:部分圆角、边框、阴影、背景色渐变

- kw_setupLayer 方法属性:
- roundCorners: 圆角位置
- roundRadius: 圆角角度
- borderWidth: 边框宽度
- borderColor: 边框颜色
- shadowColor: 阴影颜色
- shadowOffset: 阴影偏移量 :{ width: 2, height: 2 } 右下方偏移
- shadowOpacity: 阴影透明度
- shadowRadius: 阴影半径:决定模糊程度
- gradientColors: 渐变色数组
- gradientStart: 渐变色开始位置
- gradientEnd: 渐变色结束位置
- 圆角:通过 UIBezierPath 实现
- 使用时 传入 roundCorners、roundRadius 属性值
- swift:
XXXCorners: [.topLeft] ,roundRadius: 35
- OC:
XXXXXCorners:UIRectCornerTopLeft|UIRectCornerBottomLeft roundRadius:35 XXXXX
- 边框:通过 CAShapeLayer 绘制
- 使用时传入 borderWidth、borderColor 属性
- swift:
borderWidth: 5 ,borderColor: UIColor.black ,
- OC:
borderWidth:5 borderColor:[UIColor blackColor]
- 阴影:通过 CAShapeLayer 绘制
- 但是绘制的view不是当前设置的view,是在此view下方添加了一个view来实现阴影效果
- 使用时传入 shadowColor、shadowOffset、shadowOpacity、shadowRadius 属性值
- swift:
shadowColor: UIColor.red ,shadowOffset: CGSize(width: 2, height: 2) ,shadowOpacity: 0.6,shadowRadius: 5,
- OC:
shadowColor:[UIColor redColor] shadowOffset:CGSizeMake(2, 2) shadowOpacity:0.6 shadowRadius:5
- 背景色渐变:通过 CAGradientLayer 实现
- 同样也是在此view下方添加了一个view来实现渐变效果
- 使用时传入 gradientColors、gradientStart、gradientEnd 属性
- swift:
gradientColors: [UIColor.red ,UIColor.blue] ,gradientStart: CGPoint(x: 0, y: 0.5) ,gradientEnd: CGPoint(x: 1, y: 0.5)
- OC:
gradientColors:@[[UIColor redColor],[UIColor blueColor]] gradientStart:CGPointMake(0, 0.5) gradientEnd:CGPointMake(1, 0.5)
- 其他:
- 请在设置完 layout布局 并且 addsubview 后使用此方法,否则阴影、渐变色 不会有效果
- 由于是用swift写的,所以在swift上使用比较方便,按需传入属性即可,比如只想实现圆角和渐变效果,传圆角和渐变的属性值即可,边框阴影的属性都有默认值。 但是在OC中使用时,由于OC没有默认值,所以在调用时需要实现所有属性,给不需要的属性值设置默认属性即可。 详看Demo。
UIViewExt 中 获取当前控制器方法
- kw_currentController
- 个人一般在 view、cell或其他非UIViewController的类里面处理跳转使用,或者判断当前控制器是否是某个自定义控制器
- swift:
- yourView.kw_currentController?.navigationController?.pushViewController(vc, animated: true)
- OC:
- [[yourView kw_currentController].navigationController pushViewController:vc animated:true];
UIViewExt 中 添加单击手势方法
- 简化代码而已,没有特殊处理
- swift:lab.kw_tapAtion { r in }
- OC:[lab kw_tapAtion:^(UITapGestureRecognizer * _Nonnull) { }];