簡體   English   中英

UICollectionViewCell寬度大於UICollectionView錯誤處理

[英]UICollectionViewCell width greater than UICollectionView error handling

我目前正在使用UICollectionViewUICollectionViewFlowLayout以及以下UICollectionViewCell

在此處輸入圖片說明

但是,最近引發了一個錯誤,該錯誤鎖定了UI,並且在檢查控制台時,不斷向控制台吐出以下內容。

在UICollectionViewFlowLayoutBreakForInvalidSizes處創建一個符號斷點,以在調試器中捕獲此斷點。未定義UICollectionViewFlowLayout的行為,因為:項目寬度必須小於UICollectionView的寬度減去部分插入左右值,減去內容插入左和右正確的價值觀。

現在錯誤非常簡單明了,單元格的長度大於集合視圖的長度。 其原因是,在異常情況下,存在一個非常長的片段數據,導致單元格超出了收集視圖的范圍。

在單元格本身上,我的行大小為1,並且尾巴被截斷了。 我假設自動布局將以這種方式處理該問題,即如果單元格大於集合視圖的寬度,它將僅使用單元格上集合視圖的寬度,然后截斷標簽中的文本。 但是,自動布局不會執行此操作,並且在控制台中反復產生上述錯誤。

所以現在的問題是,處理這種極端情況的最佳/正確方法是什么?

  1. 有什么我錯過的小東西嗎?
  2. 在這種情況下,我將不得不“調整”流布局,因此建議對流布局進行子類化,重寫layoutAttributesForElementsInRect:然后每當它大於UICollectionView的邊界時,就調整該單元格的大小。 這條路線似乎過度殺蟲?

向您的自定義UICollectionViewCell添加小於或等於的寬度約束。

創建該約束的出口,並將其設置在collectionView(_:cellForItemAt:)

您可以只使用以下UICollectionViewDelegateFlowLayout方法來指定給定indexPath處項目的大小。

func collectionView(_ collectionView: UICollectionView, 
                  layout collectionViewLayout: UICollectionViewLayout, 
           sizeForItemAt indexPath: IndexPath) -> CGSize

有關更多詳細信息,請參閱Apple文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM