iOS 设置圆角小记

在开发中我们经常会遇见设置控件圆角的属性,一般我们有三种处理方式

1、使用CALayer 

-(instancetype)cornerAngel:(CGFloat)angel
{
    CALayer* layer=self.layer;
    layer.cornerRadius=angel;
    layer.masksToBounds=YES;
    return self;
    
}

2、使用CAShapeLayer

- (void)setCornerOnTopRightOnBottomLeft:(CGFloat) conner {
    UIBezierPath *maskPath;
    maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                     byRoundingCorners:(UIRectCornerTopRight | UIRectCornerBottomLeft)
                                           cornerRadii:CGSizeMake(conner, conner)];
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = self.bounds;
    maskLayer.path = maskPath.CGPath;
    self.layer.mask = maskLayer;
}

3、直接使用图片

对比三种方案

1、只能切四周圆角、使用简便

2、配合UIBezierPath可以剪切任意形状、性能比1好、需要配合UIBezierPath使用、某些情况需要使用setNeedsLayout、layoutIfNeeded 方法

3、省事、但是占用资源

//    添加刷新标记
    [self setNeedsLayout];
//    让当前ruloop立即刷新(不调用这个方法不会立即刷新 会等到View Drawing Cycle循环到这里时才刷新)
    [self layoutIfNeeded];
//    需要上边两行代码才生效(否则会视图不显示)
    [self.leftBtn setCornerOnTopRightOnBottomLeft:8];
//    不需要上边两行代码直接生效
//    [self.leftBtn cornerAngel:8];

猜你喜欢

转载自www.cnblogs.com/lijianyi/p/12074268.html
今日推荐