gpt4 book ai didi

ios - 动态 UITableView 高度

转载 作者:IT王子 更新时间:2023-10-29 05:33:47 25 4
gpt4 key购买 nike

我想将 UITableView 设置为匹配 TableView 中所有内容的高度。

这是我的 Storyboard

enter image description here

问题是顶部和底部的 ImageView 在屏幕上始终是静态的。

enter image description here

假设 TableView 上有 10 个项目,但由于屏幕尺寸限制只显示了 7 个。我想在用户能够看到底部 ImageView 之前显示所有 10 个。 (顺便说一句,所有 3 个 View ,即 ImageView 和表格 View 都在 uiscrollview 中)

理想

enter image description here

我必须处理的其他一些限制是 TableView 中的项目数量是动态的,这意味着它可以是任何数量,通常少于 10 个,我稍后将从 api 中检索。并且单元格高度也是动态的,具体取决于内容。

我只是从一些简单的代码开始

class ExampleViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!

var items: [String] = [
"Item 01", "Item 02", "Item 03", "Item 04", "Item 05",
"Item 06", "Item 07", "Item 08", "Item 09", "Item 10"]

override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count;
}

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

}

最佳答案

  1. 将您的 UITableView 子类化以覆盖 intrinsicContentSize 为其 contentSize,如下所示:

    override var intrinsicContentSize: CGSize {
    return contentSize
    }
  2. 然后为您的表格使用自动行高,因此您的 exampleViewController 的 viewDidLoad 将具有:

    tableView.estimatedRowHeight = 44

    还有 UITableViewDelegate 函数:

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
    }
  3. 当您从 API 接收数据并重新加载表格时,只需调用:

    tableView.invalidateIntrinsicContentSize()

    这将告诉您的表格将自身调整为与其内容相同的大小(因为覆盖),并根据需要移动底部图像。


如果您的 Storyboard抛出一个错误,指出您的 UIScrollView 的高度不明确,因为 UITableView 上没有高度限制,请选择您的 UITableView 并在尺寸检查器中为其指定一个占位符固有尺寸。

关于ios - 动态 UITableView 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34429534/

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