iOS用UIBezierPath给控件削圆角

给控件做圆角效果在开发中很常见,我们都知道直接用layer的方法也是可以裁剪的,但是性能不是很好,下面我给出两个常用的用UIBezierPath来裁剪圆角的方法。
一、全角(四个角都做裁剪)

/*
 view:裁剪的控件
 cornerRadius:圆角的大小
*/
+(void)cutCornerRadius:(UIView *)view andRadius:(CGFloat)cornerRadius{
    UIBezierPath *maskPath;
    maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds
                                          cornerRadius:cornerRadius];
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = view.bounds;
    maskLayer.path = maskPath.CGPath;
    view.layer.mask = maskLayer;
}

二、指定一个角来裁剪

/*
 view:裁剪的控件
 cornerRadii:圆角的尺寸
 corners:圆角的位置
 */
+(void)cutCornerRadius:(UIView *)view andCornerRadii:(CGSize)cornerRadii andAtRectCorner:(UIRectCorner)corners{
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:corners cornerRadii:cornerRadii];
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = view.bounds;
    maskLayer.path = maskPath.CGPath;
    view.layer.mask = maskLayer;
}

用法示例:

[TPPublicMethod cutCornerRadius:_bgView andRadius:10];

[TPPublicMethod cutCornerRadius:_bgView andCornerRadii:CGSizeMake(4, 4) andAtRectCorner:UIRectCornerBottomLeft|UIRectCornerBottomRight];

UIRectCorner说明:

typedef NS_OPTIONS(NSUInteger, UIRectCorner) {
    UIRectCornerTopLeft     = 1 << 0,左上角
    UIRectCornerTopRight    = 1 << 1,右上角
    UIRectCornerBottomLeft  = 1 << 2,左下角
    UIRectCornerBottomRight = 1 << 3,右下角
    UIRectCornerAllCorners  = ~0UL
};

你可能感兴趣的:(iOS开发,iOS开发)