CollectionView列表效能優化

2021-07-10 22:00:14 字數 1553 閱讀 3164

本篇一起來學習如何優化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...