iOS开发-UIImageView高效设置Radius
圆角的设置在iOS中随处可见,开发的时候也很方便,但是有的时候如果一个页面有大量的需要设置圆角的图片,容易产生性能问题,UIImageView ios9.0之前设置圆角是会产生离屏渲染的,9.0之后不会产生离屏渲染
因此需要日常设置圆角的方法上加一些改动:
1.最简单的图片圆角设置:
1
2
3
4
5
|
self.imageView=[[UIImageView alloc]initWithFrame:CGRectMake(100,200, 100, 100)];
[self.imageView setImage:[UIImage imageNamed:
@"FlyElephant.jpg"
]];
self.imageView.layer.cornerRadius=50;
self.imageView.layer.masksToBounds=YES;
[self.view addSubview:self.imageView];
|
2.设置Rasterize栅格化处理,会将图片放在缓存区,不会不断的进行图片渲染:
1
2
3
4
5
6
7
|
self.imageView=[[UIImageView alloc]initWithFrame:CGRectMake(100,200, 100, 100)];
[self.imageView setImage:[UIImage imageNamed:
@"dress3.jpg"
]];
self.imageView.layer.cornerRadius=50;
self.imageView.layer.shouldRasterize = YES;
self.imageView.clipsToBounds=YES;
self.imageView.layer.rasterizationScale=[UIScreen mainScreen].scale;
//不设置会模糊,不相信可以自己尝试
[self.view addSubview:self.imageView];
|
3.UIBezierPath贝塞尔曲线绘制(推荐)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
self.imageView=[[UIImageView alloc]initWithFrame:CGRectMake(100,200, 100, 100)];
UIImage *anotherImage = [UIImage imageNamed:
@"FlyElephant.jpg"
];
//注意第三个选项的设置
UIGraphicsBeginImageContextWithOptions(self.imageView.bounds.size, NO, [UIScreen mainScreen].scale);
//在绘制之前先裁剪出一个圆形
[[UIBezierPath bezierPathWithRoundedRect:self.imageView.bounds
cornerRadius:50] addClip];
//图片在设置的圆形里面进行绘制
[anotherImage drawInRect:self.imageView.bounds];
//获取图片
self.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
//结束绘制
UIGraphicsEndImageContext();
[self.view addSubview:self.imageView];
|
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/5123169.html,如需转载请自行联系原作者

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
iOS-图片拉伸技巧
iOS开发中我们会遇到渐变的背景,内容可变的流式标签,聊天气泡(QQ聊天气泡),由于内容是可变的,宽度和高度同样可变,这样就是导致每次出现的尺寸与之前不一样。如果是需要设置的比较的多,估计美工会烦死,同样也会额外增加的内存开销,所以这个知道一点图片拉伸的技巧会师我们的能使我们APP更加高效,代码更加简洁,事半功倍~从设置的角度来有四种方法可以实现~ Assets设置 首先我们有一个不规则的气泡按钮,大小是35*30,Slices选中水平和垂直方向的距离,宽高设置为1 设置完成之,我们设置Button的背景图片看下加载效果: 1 2 3 4 5 6 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(80, 100, 100, 40)]; UIImage *buttonImage = [UIImage imageNamed: @"Question" ]; [button setTitle: @"默认" forState:UIControlStateNormal]; [button addTarget:self ac...
-
下一篇
iOS开发-观察者模式
观察者模式也被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。iOS开发中最明显的观察者模式就是KVO键值对观察,如果对于KVC和KVO不是很熟悉,可以参考本人之前博客iOS开发-KVC和KVO的理解。 关于设计模式网上的介绍多如牛毛,参考资料随手可查,简单的使用OC实现一下观察者模式,我们举一个实际工作的例子,猎头和程序员的故事,简单的就是一个猎头手里面有多个候选人的信息,一旦公司有新的工作机会,会通知所有的候选人,基于以上信息,我们通过观察者模式很容易实现。 主题对象基类: 1 2 3 4 5 6 7 8 9 @ interface Subject : NSObject -( void )registerObserver:(id)observer; -( void )deleteObserver:(id)observer; -( void )notifyObs...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 面试大杂烩
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长