基本上我使用的是默認的UICollectionViewFlowLayout
。當我使用insertSections
時,確實需要一些時間。特別是如果用戶滾動這會帶來一些口吃。我使用自動佈局,在自定義UICollectionViewCell
上定位標籤。我將單元格和補充視圖(標題)出列。沒什麼特別的。在滾動時將部分插入UICollectionView時的性能問題
這裏是時間探查的截圖:
什麼,你可以在這裏看到的是,的UICollectionViewFlowLayout
prepareLayout
不會消耗可用的CPU功率的三分之一。有沒有可能加快這個速度?例如。編寫自定義方法爲layoutAttributesForElementsInRect:
,layoutAttributesForItemAtIndexPath:
,collectionViewContentSize
,prepareLayout
?這種方法怎麼樣?
其他意見我做:
更多的時候部分添加的時間越長performBatchUpdates
與插入段(約420項)確實需要。我每次添加相同數量的項目。我用儀器做了一些測試。當發生口吃時,CPU使用率超過100%。真正的內存使用量正在增加,但我用大約60 MB結束了我的測試。當時大約有48000個細胞被加載到數據集中(大約45個始終在屏幕上)。一旦這些單元格被加載,滾動工作就能流利地進行(CPU最多100%,但只有很短的時間,用戶不會注意到)。在另一項測試中,分配的總字節數大約爲1.6 GB,但持久性仍然很低。如果插入新節,框架也將降爲0。
我試圖離開單元格的自動佈局,爲單元格使用不透明背景顏色,使用剪輯限制單元格,使用shouldRasterize
等。單元格不重疊,不應使用小數值(舍入寬度)。我根本不使用陰影。我還試圖評論一些事情,看看有什麼過錯,但我認爲這一定是必不可少的。我在模擬器以及不同設備上進行了測試。
有沒有人有線索如何提高插入部分時的性能?