【发布时间】:2016-11-08 19:37:03
【问题描述】:
我对 iOS 开发很陌生,我已经被这个问题困住了几天
我在UIScrollView 中有一个UITableView 和UIImageView,UIImageView 在桌子的顶部,高度是静态的,所以我对此没有任何问题,问题是@ 987654326@,我需要根据内容动态获取高度,并将该高度设置为表格的高度约束和滚动视图的内容大小。
单元格是自行调整大小的,因此单元格的高度会因内容而异。到目前为止,我能做的最好的事情是使用UITableView 的contentSize.height 属性来获取高度,但显然这会返回基于我设置的estimatedRowHeight 的高度,而不是每行的实际高度。
代码:
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
tableView.estimatedRowHeight = rowHeight
tableView.rowHeight = UITableViewAutomaticDimension
tableView.layoutIfNeeded()
tableHeight.constant = tableView.contentSize.height
scrollView.contentSize.height = imageView.bounds.height + tableView.contentSize.height
}
我尝试过的:
- 使用
UITableView的contentSize.height属性获取高度,如代码所示和前面的解释。 -
在
willDisplayCell上单独获取每一行的高度,并将其添加到表格的高度约束和滚动视图的contentSize。但看起来这增加了比实际更多的行,在表格的末尾给了我一堆空单元格。willDisplayCell里面的代码:let cellHeight = cell.bounds.height tableHeight.constant += cellHeight scrollView.contentSize.height += cellHeight 和以前一样,除了我在
cellForRowAtIndexPath里面尝试了同样的结果。
【问题讨论】:
-
第一个问题,为什么在滚动视图中使用表格(具有内置滚动视图)(并设置高度以否定表格的滚动功能)?其次,为了执行您所要求的操作,您需要在 for 循环中手动调用
cellForRoAtIndexPath来遍历您的表数据。然后获取从该函数返回的每个单元格的高度,并结合所有高度以获得全局表格高度。但我回到第一个问题,你为什么要重做已经为你做的事情(在滚动视图中滚动的表格)? -
访问此内容以获得答案 stackoverflow.com/questions/5628527/…
标签: ios swift uitableview uiscrollview