swift tableView.contentSize.height 不同 iOS 13 和 iOS 11 ,为啥?

Posted

技术标签:

【中文标题】swift tableView.contentSize.height 不同 iOS 13 和 iOS 11 ,为啥?【英文标题】:swift tableView.contentSize.height different iOS 13 and iOS 11 , why?swift tableView.contentSize.height 不同 iOS 13 和 iOS 11 ,为什么? 【发布时间】:2020-02-27 13:38:34 【问题描述】:

我的代码是

paymentTableviewHeight.constant = paymentTableView.contentSize.height

但不同的结果 ios 版本。当我在 ios 11 上尝试时它可以正常工作,但 iOS 13 更短。

【问题讨论】:

我没有改变任何东西。只是我不明白为什么结果长度不同? tableview 高度比 iOS 11 上的要短 内容大小不取决于单元格的长度?那么,我该如何设置特定的高度? (对不起,我知道的还不够) 不,内容大小只是告诉滚动视图可以滚动多少的设置。 (表格视图是滚动视图。)好的,所以这里真正发生的是您想要一个高度准确地同时显示其所有单元格的表格视图?在那种情况下,问题是你正在做的不是如何去做。 是的,我想要它。我该怎么做 好吧,首先,何时该代码运行?它在您的viewDidLoad 中吗? 【参考方案1】:

我已经使用以下代码解决了这个问题:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 
    tableView.layoutIfNeeded()
    self.tblViewHtConst.constant = self.tableView.contentSize.height

调用 tableView.layoutIfNeeded() UITableView 会重新计算 contentSize ,然后你可以将它设置为高度约束。

如果在设置高度约束之前没有调用 layoutIfNeeded(),它会获取在estimatedRowHeight 中设置的值,在我的情况下它很大,然后实际内容大小和空白空间可见。

【讨论】:

以上是关于swift tableView.contentSize.height 不同 iOS 13 和 iOS 11 ,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

swift [Swift Notes]在学习Swift #Swift的同时收集笔记

Swift 反射

Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift

swift 示例BS swift.swift

swift swift_bug.swift

ios 整理(一)swift和oc的区别