合理的設(shè)置圖片圓角能更高的提高APP的性能,在模擬器上惊完,可以通過以下操作進(jìn)行查看圖片是否被及時渲染别伏。模擬器打開APP之后,選擇如下操作,以下性能優(yōu)化中逮矛,有效的檢測混合模式 Color Blended Layers
和 拉伸圖像 Color Misaligned Images
矮燎,在開發(fā)中能夠提成圖像的性能
Color Blended Layers
<li>這個選項基于渲染程度對屏幕中的混合區(qū)域進(jìn)行綠到紅的高亮(也就是多個半透明圖層的疊加))</li>
<li>由于重繪的原因定血,混合對GPU性能會有影響,同時也是滑動或者動畫幀率下降的罪魁禍?zhǔn)字?lt;/li>
Color Misaligned Images
<li>會高亮的那些被縮放或者拉伸以及沒有正確對齊到像素邊界的圖片(也就是非整型坐標(biāo)))</li>
<li>這些中的大多數(shù)通常會導(dǎo)致圖片的不正车猓縮放澜沟,如果一張大圖當(dāng)做縮略圖顯示,或者不正確的模糊圖像</li>
Color Copied Images
<li>有時候
寄宿圖片(layer.content)
的生成是由服務(wù)器CoreAnimation被強(qiáng)制生成一張圖片峡谊,然后發(fā)送到渲染服務(wù)器茫虽,而不是簡單的指向原始指針</li>
<li>這個選項把這些圖片渲染成藍(lán)色</li>
<li>復(fù)制圖片對內(nèi)存和CPU使用來說都是一項非常昂貴的操作,所以應(yīng)該盡可能的避免</li>
Color Offscreen-Rendered Yellow
<li>這里會把那些需要離屏渲染的圖層高亮成換色</li>
<li>這些圖層很可能需要用shadowPath
或者shouldRasterize
來優(yōu)化</li>
PNG 與 JPG圖片的區(qū)別
PNG:支持透明
JPG:不支持透明
常見的image設(shè)置圓角的方式
[imageView.layer setCornerRadius:50];// 設(shè)置圓角半徑
imageView.clipsToBounds = YES;// 超出主層邊框就要裁剪掉
這種設(shè)置方法是最常見的一種圓角設(shè)置既们,對性能來說并不是最好的濒析,可以選擇使用繪圖來設(shè)置圖像。
使用UIImageView分類設(shè)置圓角
- (void)circleImage
{
CGRect rect = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
/**
>1. size:繪圖尺寸
>2. 不透明: NO 透明 / YES 不透明
>3. scale:屏幕分辨率啥纸,默認(rèn)生成的圖像使用1.0的分辨率号杏,圖像質(zhì)量不好
可以指定0,會選擇當(dāng)前設(shè)備的屏幕分辨率
*/
//1.開啟圖片圖形上下文:注意設(shè)置透明度為非透明
UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0.0);
//2設(shè)置圓角后,填充背景色
[self.superview.backgroundColor setFill];
UIRectFill(rect);
//3.繪制圓裁切路線
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:rect];
[path addClip];
//4.繪制內(nèi)切的圓形邊框
[[UIColor redColor] setStroke];
[path stroke];
//5.繪制圖片
[self.image drawInRect:rect];
//6.獲取圖片
self.image = UIGraphicsGetImageFromCurrentImageContext();
//7.關(guān)閉圖形上下文
UIGraphicsEndImageContext();
}