iOS开发-UIImageView高效设置Radius
2016-01-12 18:40
393 查看
圆角的设置在iOS中随处可见,开发的时候也很方便,但是有的时候如果一个页面有大量的需要设置圆角的图片,容易产生性能问题,UIImageView ios9.0之前设置圆角是会产生离屏渲染的,9.0之后不会产生离屏渲染
因此需要日常设置圆角的方法上加一些改动:
1.最简单的图片圆角设置:
2.设置Rasterize栅格化处理,会将图片放在缓存区,不会不断的进行图片渲染:
3.UIBezierPath贝塞尔曲线绘制(推荐)
参考资料:http://stackoverflow.com/questions/11049016/cliptobounds-and-maskstobounds-performance-issue
http://stackoverflow.com/questions/17593524/using-cornerradius-on-a-uiimageview-in-a-uitableviewcell
因此需要日常设置圆角的方法上加一些改动:
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
相关文章推荐
- [easyui]封装一个form
- Java设计模式 建造模式(Builder)
- iOS:如何通过UIEdgeInsetsMake来制作可伸缩的Button
- iOS--九宫格奥秘(UIView)(arc4random)
- UItableView 点击cell跳转到其它界面延迟bug
- iOS的UILabel设置居上对齐,居中对齐,居下对齐
- iOS 重写UITableViewCell之动态获取label文字的宽度进行布局
- UICollectionView执行performBatchUpdates 奔溃
- 轮播图和UIPageControl(分页控制器)、NSTimer(定时器)
- UIScrollView简单概述
- UIScrollView图像缩放
- 导入项目,界面一直停在 【“building ‘ 项目名’ gradle project info”】解决办法
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】
- iOS Version 和 Build 版本号
- iOS UITableView 滚动 头图 拉伸放大效果
- 导航条UIBarButtonItem添加图片,如何避免渲染
- UIAlertController 的使用(NS_CLASS_AVAILABLE_IOS(8_0)iOS8以后有效)
- UIview转换UIimage
- EasyUI datagrid动态加载json数据
- IOS上 关于状态栏的相关设置(UIStatusBar)