设置View的一边圆角
- 效果如图
实现方式 : UIBezierPath CAShapeLayer
核心方法:
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii
-
基本思路:
通过贝塞尔曲线画一条半边圆角的路径
将该路径作为CAShapeLayer的path
将该CAShapeLayer作为视图的mask
通过贝塞尔曲线画一条半边圆角的路径
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii
该方法会接受三个参数
rect : 传控件的bounds
corners : 圆角的位置 ,该值为枚举类型。指定圆角的位置,可以分别设置左上 、左下、右上、右下。并且可以同时指定,如左上和左下,即示例图中半边圆角效果 。 UIRectCornerBottomRight : 右下角 ...
cornerRadii : 圆角大小
eg:
// 获取一条曲线。曲线路径为(0,0,96,50).圆角位置为右上和右下,圆角大小为25
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 96, 50) byRoundingCorners:UIRectCornerTopRight | UIRectCornerBottomRight cornerRadii:CGSizeMake(25, 25)];
// 初始化一个CAShapeLayer
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = CGRectMake(0, 0, 96, 50);
// 将曲线路径设置为layer的路径
maskLayer.path = path.CGPath;
// 设置控件的mask为CAShapeLayer
self.checkButton.layer.mask = maskLayer;