如何使UITableViewCell可调整大小,里面有两个垂直UILabel

时间:2018-04-07 17:37:59

标签: ios swift

我认为我正在做的一切正确,但我的表格视图单元格没有调整大小,所以我的标签被截断了。

这是我在单元格内的设置:

                20 (1000)
                   |
                   |
  20 (1000) ---- Title ---- 20 (1000)
                   |
                   |
                20 (1000)
                   |
                   |
  20 (1000) ---- Quote ---- 20 (1000)
                   |
                   |
               >= 20 (1000)

标题:

Content Hugging Priority: H 251, V 251  
Content Compression Resistance Priority: H 750, V 750

引用:

Content Hugging Priority: H 251, V 251  
Content Compression Resistance Priority: H 750, V 750

我在viewDidLoad

中也有这个设置
    tableView.estimatedRowHeight = 44
    tableView.rowHeight = UITableViewAutomaticDimension

最后,标题和引号标签都将numberOfLines设置为0。

我有什么遗漏的吗?引号标签总是被截断。

3 个答案:

答案 0 :(得分:3)

estimatedRowHeight = 250 和tableView rowHeight 保持为UITableViewAutomaticDimension

顶部标签的垂直约束:

  

顶部= 20
  高度> = 20
  底部= 20
  行数= 0
  lineBreak = wordWrap

底部标签的垂直约束:

  

高度> = 20
  底部= 20(优先级=低
  行数= 0
  lineBreak = wordWrap

屏幕截图:

<强> 1。顶部标签自动换行(相同的下标签):

enter image description here

<强> 2。顶级标签限制:

enter image description here

第3。底部标签限制:

enter image description here

<强> 4。底部标签底部空间优先级:

enter image description here

<强> 5。模拟器上的输出:

enter image description here

Sample project

答案 1 :(得分:0)

1- in p = [[0]*3]*3 p[0][0] = 5 for i in p: print(i) #prints: #[5, 0, 0] #[5, 0, 0] #[5, 0, 0] 放入一个当前以xib为单位的单元格高度的数字

estimatedRowHeight

2-在返回单元格之前的cellForRow

tableView.estimatedRowHeight = 250 
tableView.rowHeight = UITableViewAutomaticDimension

在此处查看演示cellSize

答案 2 :(得分:0)

我在答案中看到了这个技巧,但现在找不到链接,所以我将在这里发布我的修改版本。

基本上你强迫单元格布局到最大边界,并计算标签所需的高度(在设置文本之后)。

在cellForRowAtIndex:

cell.bounds = CGRect(x: 0, y: 0, width: tableView.bounds.width, height: 99999)
cell.contentView.bounds = cell.bounds;
cell.layoutIfNeeded()

可以尝试的另一件事 - 在上半部分强制布局之后 -

cell.titleLabel.preferredMaxLayoutWidth = cell.titleLabel.frame.width
cell.quoteLabel.preferredMaxLayoutWidth = cell.quoteLabel.frame.width

或者您也可以从tableView的宽度计算它,因为前导空格和尾随空格已定义。

希望这有帮助。