![](/img/trans.png)
[英]Clip last UICollectionViewCell if their total width is greater the UICollectionView width
[英]UICollectionViewCell width greater than UICollectionView error handling
我目前正在使用UICollectionView
和UICollectionViewFlowLayout
以及以下UICollectionViewCell
:
但是,最近引發了一個錯誤,該錯誤鎖定了UI,並且在檢查控制台時,不斷向控制台吐出以下內容。
在UICollectionViewFlowLayoutBreakForInvalidSizes處創建一個符號斷點,以在調試器中捕獲此斷點。未定義UICollectionViewFlowLayout的行為,因為:項目寬度必須小於UICollectionView的寬度減去部分插入左右值,減去內容插入左和右正確的價值觀。
現在錯誤非常簡單明了,單元格的長度大於集合視圖的長度。 其原因是,在異常情況下,存在一個非常長的片段數據,導致單元格超出了收集視圖的范圍。
在單元格本身上,我的行大小為1,並且尾巴被截斷了。 我假設自動布局將以這種方式處理該問題,即如果單元格大於集合視圖的寬度,它將僅使用單元格上集合視圖的寬度,然后截斷標簽中的文本。 但是,自動布局不會執行此操作,並且在控制台中反復產生上述錯誤。
所以現在的問題是,處理這種極端情況的最佳/正確方法是什么?
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.