我開發了一個自定義的UICollectionViewLayout來處理客戶端應用程序上的一些高級佈局需求,看起來很好。直到我開始嘗試使用動畫。自定義UICollectionViewLayout動畫問題
我花了一段時間的工作記錄,並使其更加靈活,所以它可以在這裏找到:https://github.com/liamnichols/LNCollectionViewPagedLayout。
其目的是將內容分頁到新頁面,如果它不適合上一頁,以確保內容不會跨兩頁切割,並且它似乎處理了這個問題。
我從一開始就注意到動畫問題在哪裏,但是我從未需要使用動畫,所以沒有嘗試調查/修復,儘管現在它已經成爲一個要求,即UICollectionViewCell
可以展開,揭示更多內容,以及何時我試圖使用任何形式的動畫方法(reloadRowsAtIndexPaths:
,performBatchUpdates:completion:
等)我總是會遇到非常奇怪的行爲,從崩潰(view argument is nil
)到混亂的佈局。
目前我的佈局的工作原理是通過詢問每個單元的大小代表就可以運行一些邏輯來看看它是否適合與否等創造的UICollectionViewLayoutAttributes
上prepareLayout
字典...
當調用layoutAttributesForElementsInRect:
方法時,它可以簡單地查詢字典並獲取與該矩形相關的一組屬性。
首先,創建此佈局的最佳方法是?我發現很難找到有關創建自定義佈局來滿足我的需求的文檔,並最終在其他開源庫中查找有關如何執行的指示。
其次,我還沒有實現初始/最終佈局屬性方法,因爲我無法弄清楚如何正確使用它們。這是我有問題的原因還是這些是可選的?
任何幫助或指示正確創建UICollectionViewLayouts
將是偉大的。
感謝您的指點,我將介紹一下initialLayoutAttributes方法,看看結果如何! – liamnichols
我接受這個答案,因爲調試技巧幫助我發現,當contentOffset不是CGPointZero時,我正在閱讀collectionView的邊界。這導致錯誤的值,導致我的佈局自身損壞並崩潰。 感謝您的提示 – liamnichols