iOS 设置圆角小记
发布日期:2022-04-05 00:52:15 浏览次数:4 分类:博客文章

本文共 1187 字,大约阅读时间需要 3 分钟。

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

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 方法。

当设置圆角是在cell上时,不能在cellForRowAtIndexPath方法中直接设置,会有偶发失效问题,应当在willDisplayCell中设置

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

 3、省事、但是占用资源

转载地址:https://www.cnblogs.com/lijianyi/p/12074268.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:关于.jfif的坑
下一篇:iOS 获取webview高度小结

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月28日 12时06分18秒