UITableViewCell高度自动布局无法在iOS 10上运行

时间:2018-05-24 15:38:13

标签: swift uitableview uikit

我有一个非常简单的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上,所有内容都应该按原样布局。

请查看以下屏幕截图:

  • iOS 10

enter image description here

  • iOS 11

enter image description here

编辑:2018年5月24日

仅拥有textLabel,如果estimatedRowHeight上有实际值,则会有效。

但是如果某个单元格具有样式.subtitle,并且将值设置为descriptionLabel,则布局将不起作用。同样的问题:iOS 10不起作用。 iOS 11可以工作(根据两个标签调整单元格大小)。

1 个答案:

答案 0 :(得分:11)

viewDidLoad

中的此配置
tableView.estimatedRowHeight = UITableViewAutomaticDimension
tableView.rowHeight = UITableViewAutomaticDimension

...仅适用于iOS 11.这是iOS 11的创新,不适用于早期的系统。

对于iOS 10,您必须提供实际的estimatedRowHeight值(例如60)才能启用自动变量行高计算。