我有一个非常简单的UITableViewController
,我想在textLabel
的每个UITableViewCell
上设置一个文字。
高度应通过autolayout计算。因此,在我的viewDidLoad
设置tableView
属性的以下值:
tableView.estimatedRowHeight = UITableViewAutomaticDimension
tableView.rowHeight = UITableViewAutomaticDimension
这是我的cellForRow
方法,我在其中初始化默认UITableViewCell
并将文本设置为其标签。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.numberOfLines = 0
cell.textLabel?.text = "hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello"
return cell
}
我的问题是,细胞不会根据标签的大小而增长。此问题仅出现在iOS 10上。在iOS 11上,所有内容都应该按原样布局。
请查看以下屏幕截图:
编辑:2018年5月24日
仅拥有textLabel
,如果estimatedRowHeight
上有实际值,则会有效。
但是如果某个单元格具有样式.subtitle
,并且将值设置为descriptionLabel
,则布局将不起作用。同样的问题:iOS 10不起作用。 iOS 11可以工作(根据两个标签调整单元格大小)。
答案 0 :(得分:11)
viewDidLoad
tableView.estimatedRowHeight = UITableViewAutomaticDimension
tableView.rowHeight = UITableViewAutomaticDimension
...仅适用于iOS 11.这是iOS 11的创新,不适用于早期的系统。
对于iOS 10,您必须提供实际的estimatedRowHeight
值(例如60
)才能启用自动变量行高计算。