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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年03月28日 12时06分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
在Javascript中使用面向对象的编程
2019-04-27
由浅入深剖析.htaccess
2019-04-27
php函数serialize()与unserialize()
2019-04-27
PHP Webservice的发布与调用
2019-04-27
php反射类 ReflectionClass
2019-04-27
php扩展xdebug基本使用
2019-04-27
为 PHP 应用提速、提速、再提速
2019-04-27
Linux下gedit显示行号
2019-04-27
《Advanced PHP Programming》读书笔记
2019-04-27
让我们谈谈RAID
2019-04-27
jQuery日期选择器插件date-input
2019-04-27
PHP使用curl_multi_add_handle并行处理
2019-04-27
NP问题
2019-04-27
AT&T与Intel汇编语言的比较
2019-04-27
javascript解析json
2019-04-27
WinDbg安装与使用
2019-04-27
推荐阅读的多核编程技术书籍
2019-04-27
维基百科上的算法和数据结构链接很强大
2019-04-27
选择排序
2019-04-27
PHP session回收机制
2019-04-27