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
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值