2016-06-01 116 views
0

我有一個UICollectionViewCell,它有幾個多行標籤。單元格定義在筆尖內部。我想佈局下面的單元格(如UITableView),左右邊距。使用動態高度計算collectionViewCell的高度

enter image description here

爲了計算單元的高度,我在sizeForItemAtIndexPath以下步驟:

  1. 實例化一個原型細胞
  2. 創建並具有所需寬度添加臨時寬度約束( collectionView寬度減去左右填充)
  3. 配置未來內容的單元格
  4. 調用系統mLayoutSizeFittingSize(UILayoutFittingCompressedSize)以獲得所需的高度

雖然高度計算似乎總是稍微偏離。在進一步檢查之後(在systemLayoutSizeFittingSize之前調用layoutIfNeeded),似乎單元格已經具有寬度約束,該寬度約束被設置爲如IB中所示的寬度。

(
    "<NSAutoresizingMaskLayoutConstraint:0x7f91baf48be0 h=--& v=--& H:[UIView:0x7f91bacb7440(304)]>", 
    "<NSLayoutConstraint:0x7f91bacb7f00 H:[UIView:0x7f91bacb7d90(359)]>", 
    "<NSLayoutConstraint:0x7f91ba970730 H:[UIView:0x7f91bacb7d90]-(0)-| (Names: '|':UIView:0x7f91bacb7440)>", 
    "<NSLayoutConstraint:0x7f91ba970780 H:|-(0)-[UIView:0x7f91bacb7d90] (Names: '|':UIView:0x7f91bacb7440)>" 
) 

在設計時,單元格寬度爲304pt。在這種情況下,電池的理想寬度是359pt。

enter image description here

有誰知道是否有可能以某種方式禁用由IB寬度限制的隱含創造?還是有更好的方法來實現靈活的高度,固定左邊&右邊距佈局?

本文認爲,以保持集合視圖的尺寸爲默認(10×10),但只用非常簡單的用戶界面的工作和使用界面生成器來查看設計有點無實際意義,使:

http://corsarus.com/2015/collection-view-with-self-sizing-cells/

回答

1

您需要爲單元格中的每個標籤(垂直)設置內容擁抱優先級和內容壓縮阻力優先級,或者爲某些標籤聲明一些高度限制

+0

內容擁抱在垂直和水平方向上的所有標籤上設置爲高 – liliqui