2017-04-20 65 views
-1

我知道如何在UICollectionView中顯示Collection單元格。但我想使用自定義佈局來顯示單元格。如何在Ios中爲UICollectionView設置自定義佈局

我的收藏應該有兩列,其中單元格的寬度是固定的,但單元格的高度可能因標籤的內容大小而異。

但我不知道該怎麼做。 我想要顯示的細胞採集如圖所示圖片下方

Layout Example

我想實現它迅速。

+0

究竟這是什麼長教程是關於https://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest –

回答

0

使用此功能,您可以根據需要更改單元格的高度和寬度。

FUNC的CollectionView(_的CollectionView:UICollectionView,佈局collectionViewLayout:UICollectionViewLayout,sizeForItemAtIndexPath indexPath:IndexPath) - > CGSize {}

使用indexPath接入小區

0
  1. 自定義UICollectionViewLayout類
  2. 爲你的視圖控制器定義一個協議來計算每個單元的高度
  3. 使你的視圖控制器成爲代理
  4. 在委託方法中,您需要計算出每個單元格的動態高度。
  5. 覆蓋準備函數,該函數將爲每個單元格的高度調用委託方法,併爲佈局子類中的每個單元格生成自定義UICollectionViewLayoutAttributes實例。
  6. 您可能還需要將這些UICollectionViewLayoutAttributes實例存儲在數組中以獲得更好的性能,以避免重新計算。 (此步驟僅在禁用UICollectionView預取時有用。)
  7. 重寫layoutAttributesForElements函數以返回給定矩形內所有項目的佈局屬性。
  8. 在您的自定義UICollectionViewCell中應用這些UICollectionViewLayoutAttributes實例以執行一些自動佈局。
  9. 覆蓋UICollectionViewLayoutAttributes子類中的copy和isEqual函數。 UICollectionViewLayoutAttributes的子類需要符合NSCopying協議,因爲屬性的對象可以在內部複製。您必須實現isEqual來比較您的子類的自定義屬性,例如標籤的高度。
+0

謝謝,根據我對你做了提,它看起來像什麼,我期待,但現在的問題是,當我要去刪除特定的單元格(刪除特定的數組元素和重新加載collectionView),然後應用程序獲取crashed.it顯示錯誤,如'UICollectionView收到的索引路徑不存在的單元格的佈局屬性: {length = 2,path = 0 - 4}' –

+0

我一直使用這種方式來編寫我的應用程序。刪除任何單元格後,該應用程序不會崩潰。也許你可以禁用使用屬性緩存陣列進行測試。 – benoitcn

相關問題