gpt4 book ai didi

swift - UiTableview 在 iOS 10 中不更新 sizetofit 但在 iOS 11 中工作

转载 作者:行者123 更新时间:2023-11-28 08:00:00 24 4
gpt4 key购买 nike

我正在创建一个动态 TableView,并在 Storyboard 中将单元格的行高设置为 44。因此,tableview 的高度将基于我的数据库根据结果返回的行数。同时,我将 tableView 的底部约束连接到带有 IBOutlet 的 View 。所以 tableview 的高度不会覆盖键盘,并与某些配置保持一定距离。我的问题是如何在 iOS 10 及更低版本中使用 sizeToFits() 更新 tableView.frame.size.height?

这里有一些日志以获得更清晰的图像,tableView and contentView size for iOS 10

另一个图像,当 tableview 的 sizetofit() 永远不会从小变大时。 Another logs ,如果我的数据库返回 0 结果,它将完全消失,然后 contentSize 将为 0.0,然后当我尝试删除一些文本时,contentSize 将回到 44,因为从数据库中得到 1 个结果,并且 SizeToFit() 将适合基于 contentSize 的大小。但在这种情况下,它仍然坚持使用 0.0 并且永远不会更新。

iOS 11 图片,tableView and contentView size for iOS 11 ,632 的 tableview 的高度是正确的,因为我确实设置了一些自动布局以防止干扰键盘,以便用户可以在 tableView 中向下滚动。

为了更好的理解一些代码,

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

// configuration for tableViewCell.

tableView.sizeToFit() // WORKs for iOS 11 but doesn't update for iOS10

if UIDevice.current.userInterfaceIdiom == .pad {
tableView.setNeedsLayout()
tableView.layoutIfNeeded()
cell.backgroundColor = UIColor.darkGray
}

return cell
}

最佳答案

我不确定你想达到什么目的。假设您希望 tableView 的大小与其内容相同,您实际上应该操纵 UITableView 高度的约束。

您需要在更新 tableView 数据源之后设置高度。如果您正在使用 sizeToFit(),您还应该在更新 tableView 数据源之后执行此操作

// using sizeToFit
func loadData(){
allData = loadFromDatabase()
tableView.reloadData()
tableView.sizeToFit()
}

如果你选择手动计算和设置约束你可以尝试

func resizeTableView(){
allData = loadFromDatabase()
tableView.reloadData()
let tableFrame = tableView.frame
tableFrame.size.height = tableView.contentSize.height
tableView.frame = tableFrame
}

由于使用 sizeToFit 时报告的一些错误,我个人将手动设置框架或设置约束而不是 sizeToFit

关于swift - UiTableview 在 iOS 10 中不更新 sizetofit 但在 iOS 11 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46928333/

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