合理的设置图片圆角能更高的提高APP的性能,在模拟器上,可以通过以下操作进行查看图片是否被及时渲染。模拟器打开APP之后,选择如下操作,以下性能优化中,有效的检测混合模式 Color Blended Layers
和 拉伸图像 Color Misaligned Images
,在开发中能够提成图像的性能
Color Blended Layers
<li>这个选项基于渲染程度对屏幕中的混合区域进行绿到红的高亮(也就是多个半透明图层的叠加))</li>
<li>由于重绘的原因,混合对GPU性能会有影响,同时也是滑动或者动画帧率下降的罪魁祸首之一</li>
Color Misaligned Images
<li>会高亮的那些被缩放或者拉伸以及没有正确对齐到像素边界的图片(也就是非整型坐标))</li>
<li>这些中的大多数通常会导致图片的不正常缩放,如果一张大图当做缩略图显示,或者不正确的模糊图像</li>
Color Copied Images
<li>有时候
寄宿图片(layer.content)
的生成是由服务器CoreAnimation被强制生成一张图片,然后发送到渲染服务器,而不是简单的指向原始指针</li>
<li>这个选项把这些图片渲染成蓝色</li>
<li>复制图片对内存和CPU使用来说都是一项非常昂贵的操作,所以应该尽可能的避免</li>
Color Offscreen-Rendered Yellow
<li>这里会把那些需要离屏渲染的图层高亮成换色</li>
<li>这些图层很可能需要用shadowPath
或者shouldRasterize
来优化</li>
PNG 与 JPG图片的区别
PNG:支持透明
JPG:不支持透明
常见的image设置圆角的方式
[imageView.layer setCornerRadius:50];// 设置圆角半径
imageView.clipsToBounds = YES;// 超出主层边框就要裁剪掉
这种设置方法是最常见的一种圆角设置,对性能来说并不是最好的,可以选择使用绘图来设置图像。
使用UIImageView分类设置圆角
- (void)circleImage
{
CGRect rect = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
/**
>1. size:绘图尺寸
>2. 不透明: NO 透明 / YES 不透明
>3. scale:屏幕分辨率,默认生成的图像使用1.0的分辨率,图像质量不好
可以指定0,会选择当前设备的屏幕分辨率
*/
//1.开启图片图形上下文:注意设置透明度为非透明
UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0.0);
//2设置圆角后,填充背景色
[self.superview.backgroundColor setFill];
UIRectFill(rect);
//3.绘制圆裁切路线
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:rect];
[path addClip];
//4.绘制内切的圆形边框
[[UIColor redColor] setStroke];
[path stroke];
//5.绘制图片
[self.image drawInRect:rect];
//6.获取图片
self.image = UIGraphicsGetImageFromCurrentImageContext();
//7.关闭图形上下文
UIGraphicsEndImageContext();
}