UITableView 估计行高动态类型

Posted

技术标签:

【中文标题】UITableView 估计行高动态类型【英文标题】:UITableView estimatedRowheight Dynamic Type 【发布时间】:2016-12-28 20:04:04 【问题描述】:

我正在使用自动调整大小的表格视图单元格来支持动态类型。

当用户将其字体大小设置为正常时,行高为 44。但是,当用户将其字体调整为更小或更大时,行高分别减小或增加。

那么,我应该将estimatedRowHeight 设置为什么,因为rowHeight 会根据用户的动态类型设置而变化?

【问题讨论】:

这只是一个估计,以加快计算。你不需要精确。设置为 44 就可以了 我知道我不需要精确,因为这只是一个估计,但我仍然希望准确。 Auto Layout Guide: Working with Self-Sizing Table View Cells 说,“尽量让估计的行高尽可能准确。系统根据这些估计计算滚动条高度等项目。估计越准确,用户体验就越无缝。”跨度> 【参考方案1】:

When the default Dynamic Type is chosen the .body pointSize is 17.0, so I use this calculation

self.tableView.estimatedRowHeight = [yourEstimateForDefaultSize] / 17.0 * UIFont.preferredFont(forTextStyle: .body).pointSize

对于默认的动态类型大小,此估计值是准确的。对于其他尺寸,它会失去准确性,但它是一种改进

【讨论】:

【参考方案2】:

我可能会尝试使用委托方法动态估计高度:

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
    return topOffset + bottomOffset + fontSize * countOfLines

【讨论】:

以上是关于UITableView 估计行高动态类型的主要内容,如果未能解决你的问题,请参考以下文章

带有 UIStackViews 的动态 UITableView 单元格高度

不使用 AutoLayout 的 UITableView 动态行高

在 UITableView 中使用自动布局进行动态单元格布局和可变行高

在 UITableView 中使用自动布局进行动态单元格布局和可变行高

Swift 动态原型行高

有没有办法让 UITableView 的估计行高实际上与准确的滚动位置一起工作?