圆角的设置在iOS中随处可见,开发的时候也很方便,但是有的时候如果一个页面有大量的需要设置圆角的图片,容易产生性能问题,UIImageView ios9.0之前设置圆角是会产生离屏渲染的,9.0之后不会产生离屏渲染

因此需要日常设置圆角的方法上加一些改动:

1.最简单的图片圆角设置:

    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栅格化处理,会将图片放在缓存区,不会不断的进行图片渲染:

    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贝塞尔曲线绘制(推荐)

    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];

参考资料:http://stackoverflow.com/questions/11049016/cliptobounds-and-maskstobounds-performance-issue

http://stackoverflow.com/questions/17593524/using-cornerradius-on-a-uiimageview-in-a-uitableviewcell

iOS开发-UIImageView高效设置Radius的更多相关文章

  1. ios开发中全局变量设置和调用方法

    ios开发中,全局变量设置和调用方法如下:在AppDelegate.h文件中设置全局变量:@interface ***AppDelegate{NSString *myName;}@property ( ...

  2. iOS开发简单高效的数据存储

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题,你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨.本文主要从概 ...

  3. iOS开发-控件设置

    一.用户界面控件共有三种基本模式:动态.静态(非动态)和被动 动态:点击它们时会发生事情——通常是出发一段自己编写的时间代码. 被动:仅用于存储用户输入的值,以备后续使用.这些控件不会触发任何操作方法 ...

  4. iOS开发——UIImageView

    1.图像点击之后,全屏浏览 - (void)viewDidLoad { [super viewDidLoad]; _myImage=[[UIImageView alloc]initWithFrame: ...

  5. iOS开发-UIImageView的contentMode属性

    UIImageView 的contentMode这个属性是用来设置图片的显示方式,如居中.居右,是否缩放等,有以下几个常量可供设定:UIViewContentModeScaleToFillUIView ...

  6. 【iOS开发】 AudioSession设置, 切换扬声器和听筒详解-保留其他应用音乐(备忘)

    本文转载至 http://blog.sina.com.cn/s/blog_693de6100101f1g8.html (2013-04-10 17:25:24) 转载▼ 标签: audiosessio ...

  7. iOS开发-UINavigationBar透明设置

    导航条最近需要设置成透明的形式,最开始想通过颜色clearColor设置,设置透明度,结果发现UINavigationItem无法显示显示,后来通过setBackgroundImage设置成功,不过会 ...

  8. ios开发xcode中设置代码块

    在开发中有很多重复的代码,很多开发者把常用的代码做成代码块提高开发效率. 在xcode里选中代码块的时候总是很不容易,点击选中的代码(文字),不要移动和松开鼠标左键,当竖线变成像拉长了的x(我也不知道 ...

  9. iOS开发小技巧--设置按钮圆角

    方法一:代码设置 方法二:通过图形化界面

随机推荐

  1. IE6下select被这罩住

    在我们做弹出遮罩层时经常遇到这种问题,就是select被这罩住不兼容IE6,其实解决这种问题并不难,只要掌握住原理就挺简单的. 首先就是当遮罩层出现时select要暂时隐藏,但是不能用display: ...

  2. 服务端工程师入门与进阶 Java 版

    前言 欢迎加入我们.这是一份针对实习生/毕业生的服务端开发入门与进阶指南.遇到问题及时问你的 mentor 或者直接问我. 建议: 尽量用google查找技术资料. 有问题在stackoverflow ...

  3. PHP 日期时间类 Carbon 的常见用法

    Carbon 继承了 PHP DateTime 类,所以 DateTime 类的方法同样适用于 Carbon 类. 初始化一个日期 use Carbon\Carbon; $today = new Ca ...

  4. Math 对象

    Math对象提供了,我们一般进行数学运算的所有函数. Math.random() 随机0~1之间的随机数 [0, 1) Math.max() 求传入参数的最大数 Math.min() 求传入参数的最小 ...

  5. python 全栈开发,Day106(结算中心(详细),立即支付)

    昨日内容回顾 1. 为什么要开发路飞学城? 提供在线教育的学成率: 特色: 学,看视频,单独录制增加趣味性. 练,练习题 改,改学生代码 管,管理 测,阶段考核 线下:8次留级考试 2. 组织架构 - ...

  6. JavaScript实现抽象类与虚方法(六)

    一:什么是js抽象类与虚方法 虚函数是类成员中的概念,是只做了一个声明而未实现的方法,具有虚函数的类就称之为抽象类,这些虚函数在派生类中才被实现.抽象类是不能实例化的,因为其中的虚函数并不是一个完整的 ...

  7. ORA-12638: 身份证明检索失败 的解决办法

    今天在使用应用程序连接Oracle时碰到了 “ORA-12638: 身份证明检索失败” 错误, 解决方法:这是因为Oracle-client端的高级安全性验证导致,解决办法如下: 开始 -> 程 ...

  8. poj 3415

    对拍没错..莫名wa了 利用容斥求每个串的重复子串 其实就是找到每个元素能扩展到的最大元素 即(rr-i)*(i-lr)*(w[i]-kk) 就可以了 然后处理这个先离散化再搞 另外是x y要清空 # ...

  9. Codeforces 983C Elevator dp (看题解)

    Elevator 怎么今天写啥题都不会写啊, 我是傻了吗.. 把电梯里面四个人的目标点当作状态, 然后暴力转移. #include<bits/stdc++.h> #define LL lo ...

  10. 微信小程序 --- 表单输入验证(手机号、邮箱验证、输入非空)

    js代码 Page({                   /**    * 页面的初始数据    */         data: {         indicatorDots: false,   ...