gpt4 book ai didi

ios - 在 ScrollView 中调整了 UITableView 的大小,内容 View 未调整大小

转载 作者:行者123 更新时间:2023-11-30 11:43:01 26 4
gpt4 key购买 nike

我正在开发一个应用程序,用户可以在其中创建游戏列表,并且我已成功创建场景,用户可以在其中查看列表的详细信息(标题和描述)并获取 UITableView 中添加的游戏的概述。

当用户将游戏添加到 tableView 时,我会调整表格大小和scrollView 内容大小,以便轻松地使用 ScrollView 显示所有游戏。问题在于 didSelectRowAt 函数仅由前两个单元格调用!我不明白为什么它对其他细胞不起作用。

调整大小的代码:

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if gamesInList.count > 0 && gamesInList.count != previourCount {
previourCount = gamesInList.count
gamesTableView.isHidden = false
gamesInListTitle.isHidden = false
listEditButton.isHidden = false

// MARK: Resize views for the table view
let oldTableSize = gamesTableView.frame.size.height
print(gamesTableView.estimatedRowHeight)
// Resi
gamesTableView.frame = CGRect(x: gamesTableView.frame.origin.x, y: gamesTableView.frame.origin.y, width: gamesTableView.frame.size.width, height: CGFloat(gamesInList.count) * gamesTableView.estimatedRowHeight) // TODO Ond variabel!
scrollView.contentSize = CGSize(width: contentView.frame.size.width, height: scrollView.contentSize.height - oldTableSize + gamesTableView.frame.height)

gamesTableView.reloadData()
}
}

我认为这与 ScrollView 内的内容 View 未调整大小有关,因此我尝试用代码调整它的大小,但无论如何它都不起作用。

更新

所以我已经调试我的问题一段时间了,我想我已经找到了真正的问题。 ScrollView contentSize 已正确调整大小,但 contentView 未调整大小并保持不变。以编程方式调整其大小不会执行任何操作,因为它只是保持原始大小

最佳答案

经过大约 5 个小时的搜索和测试,我终于成功解决了这个奇怪的问题,即自动布局。

第一步是修复 ScrollView 和内容 View 的约束,使其随内容动态扩展

第二个也是最难修复的步骤是实际上设法强制 contentView 使用新的 ScrollView contentSize 进行扩展。但看看这个post我找到了解决我的问题的方法。不确定这是否有点黑客行为,但您给 UITableView 一个高度约束(高),您可以将其拖到代码中,然后更改该约束,这将强制自动布局执行您的命令。

完成代码:

if gamesInList.count > 0  && gamesInList.count != previousCount {
previousCount = gamesInList.count
gamesTableView.isHidden = false
gamesInListTitle.isHidden = false
listEditButton.isHidden = false

// MARK: Resize views for the table view
let oldTableSize = gamesTableView.frame.size.height

self.gamesTableView.frame.size = CGSize(width: gamesTableView.frame.size.width, height: CGFloat(gamesInList.count) * gamesTableView.estimatedRowHeight)

scrollView.frame.size = CGSize(width: scrollView.frame.size.width, height: scrollView.contentSize.height - oldTableSize + gamesTableView.frame.height)

tableViewContraint.constant = scrollView.contentSize.height

gamesTableView.reloadData()

}

希望这有帮助!

关于ios - 在 ScrollView 中调整了 UITableView 的大小,内容 View 未调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49127257/

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