2015-11-04 71 views
-1

我有以下4 Labels在自定義TableViewCell目前看起來是這樣:成長TableViewCell高度與包裝標籤

我有這樣的:

enter image description hereenter image description here

第一,第三和第四個標籤的寬度約束固定,最大行數設置爲1.第二個Label填充標籤1和3之間的水平空間。

我想第二Label換到一個最大的2條線,並且使得每個標籤的第一行對齊這樣垂直對齊頂端:

我想這樣的:

enter image description here

我已將每個標籤的背景顏色設置爲灰色,以便可以看到約束條件。

+0

除非你想潛水深,做大量的計算,已經在SO討論了很多,使用單行標籤之一,以「措施」最大限度地爲第二高度標籤,並讓它限制行數。大寫字母的第三個標籤看起來不錯,大約2.2的倍數應該可以做到。可能還想要將所有標籤設置爲多行以具有相同的插頁。 –

回答

1

您可以使用自行調整大小的單元來實現此目的。爲了使這項工作的兩行添加到您的UITableview

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 50 

然後在Interface Builder設置在原型細胞以下限制:

取消選擇所有約束「約束的利潤」。

標籤1:

  • 頂部:10
  • 左:10
  • 底部:greaterOrEqual 10
  • 寬度:60(或任何實際寬度)

標籤2:

  • 頂部:10
  • 左:10
  • 底部:10

標籤3:

  • 頂部:10
  • 左:10
  • 底部:greaterOrEqual 10
  • 寬度:60(或任何實際寬度)

標籤4:

  • 頂部:10
  • 左:10
  • 右:10
  • 底部:greaterOrEqual 10
  • 寬度:60(或任何實際的寬度)

如果像這樣設置約束,當第二個標籤將文本換行到第二行時,單元格高度自動變高。

enter image description here

enter image description here

+0

完美!簡單而直接。謝謝。 –

1

要頂部對齊UILabels,您可以將所有UILabel的頁邊距約束設置爲常量,或設置頂部對齊約束。要設置頂部對齊約束,請選擇標籤並按住Ctrl並從標籤拖動到另一個。從彈出框中選擇頂部對齊。

需要注意的一點是,對於第二個標籤,請將4個邊距長度設置爲5pt左右,但不要像其他寬度或高度那樣限制其寬度或高度。

選擇第二個標籤後,最多可以在右側實用程序面板中配置2行。

要動態更改單元格的高度有點棘手。首先,您應該知道文本是否足夠長以將標籤拉伸爲2行和標籤的高度。 (See Here)如果文本足夠長以佔用兩行,則該方法將返回比通常大的高度值。在此基礎上的高度變化,請使用以下的UITableViewDelegate動態改變的UITableViewCell的高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

希望這有助於。