在 Xcode 9.0.1 单元格大小的 UITableviewcell 中它不会在运行时扩展?

Posted

技术标签:

【中文标题】在 Xcode 9.0.1 单元格大小的 UITableviewcell 中它不会在运行时扩展?【英文标题】:in UITableviewcell in Xcode 9.0.1 cell size it not expanding at runtime? 【发布时间】:2017-10-31 09:25:02 【问题描述】:

我已尝试拖放 UITableviewcell 并从文件检查器更改行高无法在运行时扩展单元格高度。

在 Xcode 9.0.1 中,我遇到了关于单元格高度在运行时没有增加的问题。

【问题讨论】:

【参考方案1】:

Swift 3+ 如果你想要动态的行高,你可以定义你的约束(确保它们是明确的),将标签的 numberOfLines 设置为零,然后在 viewDidLoad 中,告诉它行应该自动调整它们的高度:

override func viewDidLoad() 
        super.viewDidLoad()

        tableView.estimatedRowHeight = your height here
        tableView.rowHeight = UITableViewAutomaticDimension
 

或者试试这个。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
        return UITableViewAutomaticDimension
    

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat 
        return UITableViewAutomaticDimension
    

【讨论】:

【参考方案2】:

您必须将单元格配置为自行调整大小:

1:将以下行添加到 viewDidLoad()。指定一个您认为是 tableView 中显示的单元格的平均高度的 tableViewRowHieght:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 200

2:确保单元格中的所有标签都能够根据需要扩展到尽可能多的行。这是通过将属性检查器中的行数设置为 0 来完成的,就像我在下图中为我的标题标签所做的那样:

3:最后,您必须为单元格中的每个元素设置约束,以便编译器可以在运行时正确计算单元格的大小。在这里,我添加了两个标签,将第一个标签的高度限制在视图的顶部,将底部的高度限制在下面的标签 2 中。然后标签 2 必须限制在视图的底部。只要您的约束不包含单元格顶部到底部之间的“间隙”,编译器就可以计算单元格的高度:

【讨论】:

以上是关于在 Xcode 9.0.1 单元格大小的 UITableviewcell 中它不会在运行时扩展?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单元格大小更改后自动调整 CollectionViewCell 中的内容大小?

自定义 UITableViewCell 的高度

iOS 有时会自动调整单元格标签的大小

点击时表格视图单元格分隔线消失

iOS 9 上的 UICollectionViewCell 中的大小类错误

在表格视图中点击按钮 - 错误的单元格