设置视图部分圆角 + (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius

设置视图部分圆角问题,只需要设置 layer.cornerRadius
这里写图片描述

UIRectCorner有五种
UIRectCornerTopLeft //上左
UIRectCornerTopRight //上右
UIRectCornerBottomLeft // 下左
UIRectCornerBottomRight // 下右
UIRectCornerAllCorners // 全部

failLabel = [UILabel new];
failLabel.textColor = [UIColor whiteColor];
failLabel.font = APP_TEXT_FONT_20;
failLabel.backgroundColor = kColorFF3333;
failLabel.textAlignment = NSTextAlignmentCenter;
[self.contentView  addSubview:failLabel];
failLabel.whc_LeftSpace(HGADPT(30)).whc_TopSpace(HGADPT(20)).whc_Height(HGADPT(32)).whc_Width(HGADPT(120));
failLabel.text = @"即将到期";

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = [UIBezierPath bezierPathWithRoundedRect:failLabel.bounds byRoundingCorners:  UIRectCornerBottomRight cornerRadii: (CGSize){ 5.0f}].CGPath
failLabel.layer.masksToBounds = YES;
failLabel.layer.mask = maskLayer;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DRCornerViewExtension是一款设置圆角的方式,无离屏渲染,无mask 使用 CAShaperLayer 实现 Extension的软件。使用 maskToBounds 和 cornerRadius 或者 mask 时 造成的离屏渲染(如下图):使用 UIView Corner 时的UIImageView使用 UIView Corner 时的UILabel核心代码:- (void)dr_cornerWithRadius:(CGFloat)radius backgroundColor:(UIColor *)bgColor {     CGFloat width = CGRectGetWidth(self.bounds);     CGFloat height = CGRectGetHeight(self.bounds);     UIBezierPath * path= [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, width, height)];     CAShapeLayer *shapeLayer = [CAShapeLayer layer];     if (radius == -1) {         radius = MIN(width, height)/2;     }     [path  appendPath:[UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:UIRectCornerAllCornercornerRadii:CGSizeMake(radiusradius)]];     /*      字面意思是“奇偶”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点的数量。如果结果是奇数则认为点在内部,是偶数则认为点在外部      */     [path setUsesEvenOddFillRule:YES];     shapeLayer.path = path.CGPath;     shapeLayer.fillRule = kCAFillRuleEvenOdd;     shapeLayer.fillColor = bgColor.CGColor;     if ([self isKindOfClass:[UILabel class]]) {         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{             [self.layer addSublayer:shapeLayer];         });         return;     }     [self.layer addSublayer:shapeLayer]; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值