iOS性能優化 - 網絡圖片

導語:App中顯示的圖片大部分來自服務器,一般使用SDWebImage幫我們下載并顯示,但是這并不是最好的效果,本文介紹如何優化網絡圖片的顯示。

友情提示:性能優化是個無底洞,建議適可而止。


一、存在的問題

1.像素不對齊

  • 由于網絡圖片一般不會有@2x和@3x之分,通過SDWebImage庫下載的圖片不加以處理就直接顯示。

  • 像素不對齊是指物理像素(pixel)不對齊;出現像素不對齊,會導致GPU在渲染時,對沒對齊的邊緣,進行插值計算,造成性能損耗了。

  • 當圖片的size和顯示圖片View的size不同 或 圖片的scale和屏幕的scale不同,就會發生像素不對齊的問題。

  • iPhone模擬器中的Debug -> Color Misaligned Images選項 或Core Animation->Display Settings->Color Misaligned Images選項都可以將像素不對齊的部分顯示出來。

  • 當UIView(及其子類)的frame像素不對齊顯示洋紅色;當圖片的像素大小與控件的大小不一致,顯示黃色。

2.像素混合

  • 像素混合是指在某視圖為透明背景色,GPU在渲染視圖時,需要將該視圖和下層視圖混合(Blend)后才能計算出該像素點的實際顏色;這增加了GPU的工作,損耗了性能。

  • 當圖片是透明圖片時,像素混合必然會發生。

  • iPhone模擬器中的Debug ->Color Blended Layers選項 和 Core Animation ->Display Settings ->Color Blended Layers都可以將像素混合的部分顯示出來。

  • 發生了像素混合的區域顯示紅色,正常則顯示綠色。

3.離屏渲染

  • App中經常使用圓角圖片,如果通過設置cornerRadius值和masksToBounds=YES實現圓角效果。因為它會觸發GPU的離屏渲染,引起性能問題。模擬器中的Color Offscreen-Rendered可以檢測是否發生離屏渲染(如果出現黃色就發生了離屏渲染)。

</br>

二、解決方案

1.像素不對齊

  • 要想像素對齊,必須保證image.size和顯示圖片view.size相等 且 image.scale和 [UIScreen mainScreen].scale相等。可以在網絡圖片下載完成后進行壓縮裁剪等操作在進行渲染。

2.像素混合

  • 設置圖片為不透明,可以設置背景顏色為白色。

3.離屏渲染

  • 離屏渲染是圖片圓角處理中討論比較多的問題,一般利用Core Graphics繪制。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容