使用估计高度时 UITableview 内容大小出错

Posted

技术标签:

【中文标题】使用估计高度时 UITableview 内容大小出错【英文标题】:UITableview content size gets wrong while using estimated height 【发布时间】:2019-01-29 18:39:57 【问题描述】:

我在使用表格视图内容大小时得到了空白空间。我将其称为 https://forums.developer.apple.com/thread/81895。但这对我不起作用。当我调用获取表格内容大小时,它给出了错误的大小,例如,如果表格视图内容大小为 100 意味着它给了我 140 或 80 之类的......等等。那么,如果有人知道如何处理或如何获得正确的表格视图内容大小??

【问题讨论】:

提供您使用的功能的更多信息或发布代码以便我们为您提供帮助。 我需要找到表格视图内容大小,因为我需要根据行数增加表格高度。我使用表格视图自动尺寸来自动增加基于单元格高度的单元格内容。所以我过去常常在表格视图完全加载后找到表格内容的大小,然后我们可以调整表格视图的大小。我使用下面的代码来获取表格视图内容大小, Print(tableview.contentSize) 但它给出了错误的大小。所以我研究了一些链接,然后我发现了这个forums.developer.apple.com/thread/81895。 在该链接中,您可以看到 Apple 表示我们需要将估计的表格高度提及为 0 以获得正确的表格视图内容大小。但它再次给出了错误的内容大小。例如,表格视图加载 5 行,内容大小高度为 100.0,但它只给出 80.0。我不知道如何找到确切的表格视图内容大小。你能帮忙吗? 【参考方案1】:

使用下面的代码一次

override func viewDidLoad() 
  super.viewDidLoad()
  yourTableView.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil)



override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) 
    if(keyPath == "contentSize")
        if let newvalue = change?[.newKey] 
            let contentHeight: CGFloat = yourTableView.contentSize.height
            print(contentHeight)
        
    

【讨论】:

以上是关于使用估计高度时 UITableview 内容大小出错的主要内容,如果未能解决你的问题,请参考以下文章

关闭另一个视图后 UITableView 滚动内容大小不正确

如何将 UITableView 的高度调整为内容大小的高度?

UITableView 内容大小小于预期

展开或折叠时可展开的 UItableview 内容高度不同

带有 AutoLayout 的 UIScrollView 内的 UITableView 动态内容大小高度

是否可以继承 UITableView 并根据单元格的数量使其高度具有内在的内容大小?