本篇一起來學習如何優化uicollectionview實現的網格布局,這裡只是展示和文字,但是比較大,而且比較多。在優化之前,很明顯的一卡一卡的。
在優化之後,fps達到了平穩的58~60,快速滾動時,基本都是60,而且在優化後通過core animations檢測已經沒有離屏渲染、圖層混合等。
這是在前一篇講如何實現網格布局的文章中的效果圖,也是本篇文章要優化的內容。如果對網格布局不太懂,可以先閱讀【uicollectionview網格布局】
優化第一步:直接使用uiview,而不是uiimageview,這樣更輕量:
1
2
3
@property
(nonatomic
,strong
)uiview
*imageview;
優化第二步:裁剪大小至控制項的大小
裁剪前的效果圖。裁剪前,很明顯被壓縮得很厲害,已經變形了,效果很差:
裁剪後的效果圖。裁剪後,大小按照一定的比例裁剪,且的大小與控制項的大小正好一致,也就沒有了color mismatch images的問題了:
因為這裡的背景的黑色,所以使用不透明。裁剪的**:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 -
(uiimage*)
clipimage:(
uiimage*)
image
tosize:(
cgsize
)size
非同步去剪裁,在剪裁完成後再更新:
1
2
3
4
5
6
7
8
9
10
dispatch_async
(dispatch_get_global_queue(0
,0),
^);
});優化第三步:快取剪裁的
在實際開發中,我們如果要優化,可以將剪裁後的快取到本地。不過這裡為了簡單,只是將裁剪後的快取到記憶體中,避免重複裁剪。我們給model增加乙個字段,記錄剪裁後的,然後在載入的地方,判斷一下:
1
2
3
4
5 if
(model
.clipedimage)
這裡使用的是uiview來呈現,這樣就更輕量一些。
CollectionView快速建立
pragma 配置檔案 self collectioinview registerclass shstorecollectioncell class forcellwithreuseidentifier storecollectioncell nsinteger numberofsectionsin...
swift中collectionView的簡單用法
之前寫過oc中collectionview的用法,現在再看看swift中collectionview的用法,有興趣的朋友,可以兩者前後比較下區別,swift現在沒有穩定下來,語法更新的比較快,但是它核心的一些東西,已經定型了。這些還是靠讀者們自己去挖掘吧。這裡簽署資料來源和 此時不需要引入layou...
IOS學習之collectionView的使用
1 首次建立初始化時候肯定會遇到以下錯誤 uicollectionview must be initialized with a non nil layout parameter 解決辦法 使用乙個非空的layout初始化集合檢視,具體 源 wbsearchcontroller search wbs...