我已经创建了一个由多个部分分隔开的可扩展表格视图。由于此表视图位于容器视图内部,因此每次表视图展开或折叠时,我都需要更新容器视图的大小。
我使用tableview.contentsize.height更新了容器的大小,但发现容器的大小在展开或折叠时有所不同。
例如,假设有4个部分,如果我折叠第3和第4个部分,则tableview将返回200的高度。同时,如果在第3和第4个折叠时将表的第1和第2个部分展开,则内容尺寸高度大于200。
我很沮丧为什么程序会给我这样混乱的信息,因为我需要适当的内容大小高度来更新容器视图。这里有人可以启发我吗?
答案 0 :(得分:0)
您所描述的内容大小行为是正确的。如果您想知道UITableView
的高度,则应查看其框架,而不是其内容大小。
我不确定为什么您需要为表视图提供容器视图,可以像简单的UIView
一样布局,那么问题就少了,只需更改tableView框架即可。
更新:
阅读评论后,我看到您想要在tableViewCell内部使用tableView。大多数情况下,您必须自己做,但我可以为您提供UITableViewAutomaticDimension
的帮助。
尝试将其添加到您的viewController中:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
override func tableView(tableView: UITableView, estimatedHeightForRowAt indexPath: NSIndexPath) -> CGFloat {
return 44//approximate cell height
}
主要是在接口构建器中正确设置约束。记住,约束不会改变生成器上单元格的高度,您可能必须在“大小”检查器中自行完成。无论如何,如果您不这样做,它将在构建过程中调整大小。
答案 1 :(得分:0)
请尝试自行计算高度,而不要使用contentSize
。如果每个像元的高度相同,将会容易得多。假设它们都是50高度,第1部分有1行,第2部分有3行。(1 + 3)* 50 =容器高度。显然,如果您有节和插图,则还需要将其包括在计算中。
如果单元格的高度不同,只需调用表格视图单元格高度委托即可获取相关高度。
如果这对您不起作用,请更具描述性并添加一些代码。