gpt4 book ai didi

ios - 在使用自动调整大小的单元格和不可滚动的表格时调整 tableView 高度

转载 作者:可可西里 更新时间:2023-11-01 01:35:34 24 4
gpt4 key购买 nike

我遇到的问题是我使用的是自动调整单元格和估计的行高。

我的表格 View 是 ScrollView 中的不可滚动表格。我有一个最初设置为 0 的表格高度变量。

我正在尝试将我的表格高度更新为正确的大小,具体取决于填充它的单元格数量以及这些单元格将占用的大小。我正在尝试使用 tableview.contentSize.height 获取表格高度并将变量设置为该大小。

然后我记忆起我的对齐功能来重置表格高度。当我构建和运行表时,表的大小不足以显示它应该显示的所有单元格。

我该如何解决这个问题?

最佳答案

您可以通过以下步骤完成 ->

  1. 用 0 Leading, Top, bottom, Trailing constant 在 UIView 中构造 tableview
  2. 添加 UIView 的高度约束并定义它的导出

enter image description here 3.加载tableview中的Data,获取tableview的ContentHeight

  1. 更新 UIView 的高度约束等于 tableview 的 ContentHeight

Dont forget to call layoutIfNeeded() after updating constraint

class ViewController: UIViewController {

@IBOutlet weak var containerViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var nameTableView: UITableView!

var dataArrary = [String]()
override func viewDidLoad() {
super.viewDidLoad()
nameTableView.rowHeight = UITableViewAutomaticDimension
nameTableView.estimatedRowHeight = 44.0
nameTableView.tableFooterView = UIView(frame:CGRectZero)
nameTableView.tableHeaderView = UIView(frame:CGRectZero)
dataArrary = ["item1 bshfklsdflkjsdfkljsdklfjlsdkfjlksdjflksdjflkdsjflkdsjflksdjflkjdslkfjdslkjflkdsfjdsfkljsdflkjdslkfj", "item2hfdshjgfhjdsgfhjdgfhjdgfhjdgfhjgfhsdf", "item3", "item4", "item5", "item6kfjdskfljsdlkfjlksdfjlksdjfkldsjfklfjdkslf"]

}

override func viewDidAppear(animated: Bool) {

updateView()
}

func updateView() {

self.nameTableView.scrollEnabled = false

self.nameTableView.frame.size = CGSizeMake(self.view.frame.width, self.nameTableView.contentSize.height)
containerViewHeightConstraint.constant = self.nameTableView.frame.height
// assign height equal to the tableView's Frame
self.view.layoutIfNeeded()
// redraws views and subviews with updated constraint

}
}

extension ViewController:UITableViewDataSource {

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return dataArrary.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.numberOfLines = 0
cell.textLabel?.text = dataArrary[indexPath.row]
return cell
}

}
  1. 它应该是这样的

enter image description here

关于ios - 在使用自动调整大小的单元格和不可滚动的表格时调整 tableView 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38230195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com