2015-11-06 88 views
0

我使用自動佈局來基本上創建一個表格(如在Excel或HTML中)。有3行和3列。每一行都是一個視圖,每個單元格都是該行內的視圖。每個單元格包含兩個標籤:一個始終是單行,另一個可根據其內容動態調整大小。使用自動佈局的動態高度的網格視圖

這個想法是,如果單元格內的其中一個標籤展開,整個行就會展開。我附上了一個例子來說明我已經佈置了我的觀點的方式。

Grid example

我已經做了約束所有的細胞其行的頂部/底部。標籤對其單元的邊有約束。標籤有其設置爲0,結果行數是這樣的:

Simulator

幾乎是我想要的。除了標籤的頂部沒有對齊。我已經對優先級進行了一些調整:將單元格的內容優先級設置爲1000,從而使標籤的底部空間約束「> = 0」。這似乎沒有幫助或產生錯誤。

這可以通過自動佈局來實現嗎?或者我應該使用類似於CollectionView的東西?

+0

上約束信息不足以推導出的問題,但通過觀察第二圖像,我能猜出你的頂部標籤高度現轄降低標籤的高度時,文本少了。爲兩個標籤應用一些背景顏色,看看是否如此。如果是這種情況,那麼這意味着頂級標籤的高度是靈活的,您需要保持不變。 – Gandalf

回答

0

對於那些想知道:我通過使用嵌套UIStackViews修復了這個問題。

一個垂直的堆棧視圖來保存行,行是水平的堆棧視圖,而單元格是包含這兩個標籤的垂直堆棧視圖。

要使UIStackViews與動態標籤高度一起工作,您必須設置preferredMaxLayoutWidth(我認爲這是一個錯誤)。我創建了這一個UILabel子類:

class FixedLabel: UILabel { 
    // This is required for iOS 9, to make dynamic labels resize properly 

    override func layoutSubviews() { 
     super.layoutSubviews() 
     preferredMaxLayoutWidth = bounds.width - 1 
    } 
} 
相關問題