2015-04-02 59 views
0

基本上我使用的是默認的UICollectionViewFlowLayout。當我使用insertSections時,確實需要一些時間。特別是如果用戶滾動這會帶來一些口吃。我使用自動佈局,在自定義UICollectionViewCell上定位標籤。我將單元格和補充視圖(標題)出列。沒什麼特別的。在滾動時將部分插入UICollectionView時的性能問題

這裏是時間探查的截圖:

UICollectionViewFlowLayout prepareLayout

什麼,你可以在這裏看到的是,的UICollectionViewFlowLayoutprepareLayout不會消耗可用的CPU功率的三分之一。有沒有可能加快這個速度?例如。編寫自定義方法爲layoutAttributesForElementsInRect:,layoutAttributesForItemAtIndexPath:,collectionViewContentSize,prepareLayout?這種方法怎麼樣?

其他意見我做:

更多的時候部分添加的時間越長performBatchUpdates與插入段(約420項)確實需要。我每次添加相同數量的項目。我用儀器做了一些測試。當發生口吃時,CPU使用率超過100%。真正的內存使用量正在增加,但我用大約60 MB結束了我的測試。當時大約有48000個細胞被加載到數據集中(大約45個始終在屏幕上)。一旦這些單元格被加載,滾動工作就能流利地進行(CPU最多100%,但只有很短的時間,用戶不會注意到)。在另一項測試中,分配的總字節數大約爲1.6 GB,但持久性仍然很低。如果插入新節,框架也將降爲0。

我試圖離開單元格的自動佈局,爲單元格使用不透明背景顏色,使用剪輯限制單元格,使用shouldRasterize等。單元格不重疊,不應使用小數值(舍入寬度)。我根本不使用陰影。我還試圖評論一些事情,看看有什麼過錯,但我認爲這一定是必不可少的。我在模擬器以及不同設備上進行了測試。

有沒有人有線索如何提高插入部分時的性能?

回答

1

在圖像附件的調用樹中有相當多的未解決的符號。您可以嘗試在僅包含MonthView應用程序的調用樹函數之一中縮小性能問題。

嘗試檢查Hide System Libraries並使用Debug作爲構建配置,以便您可以觀察這些符號並導航到應用程序中的特定代碼。

一旦您明確了您的集合視圖數據源或委託對UICollectionView框架級別的性能問題沒有貢獻,那麼您可以花費精力尋找一種最小化此類集合視圖部分更新的方法。

也許您的單元格自動佈局配置相當複雜,您可能可以簡化它?

雖然如果不真正查看收藏視圖單元格的內容,很難理解。

相關問題