Ios Swift UITableView可以';不能正确计算内容高度
我在UITableView中遇到了一个奇怪的问题,无法正确计算其内容的高度 我有一个自定义UITableView类,它嵌入到另一个自定义UITableView中,我希望它自动调整其高度以适应内容,因此我已经:Ios Swift UITableView可以';不能正确计算内容高度,ios,swift,uitableview,Ios,Swift,Uitableview,我在UITableView中遇到了一个奇怪的问题,无法正确计算其内容的高度 我有一个自定义UITableView类,它嵌入到另一个自定义UITableView中,我希望它自动调整其高度以适应内容,因此我已经: override var contentSize: CGSize { didSet { self.invalidateIntrinsicContentSize() } } override var intrinsicContentSize: CGSize
override var contentSize: CGSize {
didSet {
self.invalidateIntrinsicContentSize()
}
}
override var intrinsicContentSize: CGSize {
self.layoutIfNeeded()
return self.contentSize
}
现在当我使用:
self.estimatedRowHeight = UITableView.automaticDimension // non-zero value like 40 isn't working either
self.rowHeight = UITableView.automaticDimension
输出是非全高的帧,当我在这个TableView中打开“滚动启用”时,它可以滚动全部内容(不希望这样):
现在当我改变
self.estimatedRowHeight = UITableView.automaticDimension
致:
输出正是我想要的,除了内容文本被剪切。。。
这是我的手机:
控制台在任何情况下都不会显示任何autolayout错误
你知道发生了什么事吗?我花了好几天的时间试图让这些评论发挥作用,这是我最不需要的。
如果你需要更多的信息,请告诉我
编辑:
如果我将estimatedRowHeight更改为一个较大的数字,例如500,我将在单元格下获得大量的空白空间:
因此,TableView似乎无法固定内容的单元格高度。也许这会对某人有所帮助。也许是关于CellView中的文本字段。你把它的布局设置成包裹了吗
此外,我会尝试在尺寸检查器中将其内在尺寸值设置为“占位符”。UITableView.automaticDimension只有在自定义单元格中设置了顶部和底部约束时才能正常工作。例如,长文本的底部约束应该设置为1小时前标签,1小时前标签的底部约束应该设置为单元格的底部。我已经设置好了。即使有了基本的标签,它也会变得一团糟。这里是输出:第一张照片是
estimatedRowHeight=0
,第二张是self.estimatedRowHeight=100
将“占位符”的固有大小值设置为“占位符”,我尝试了“换行”和“截断尾部”。这是UILabel,而不是文本字段。这是我能得到的最基本单元格的输出,仅文本:imgur.com/a/qt6MW56第一张照片是estimatedRowHeight=0
,第二张是self.estimatedRowHeight=100
,所以我有了一些突破。。。我在里面设置了一个断点:override var intrinsicContentSize:CGSize{self.layoutifneedd()return self.contentSize}
第一个值是0(在显示数据之前猜测),之后是1000(根据estimatedRowHeight猜测,10个单元格x 100),最后是1973.333297729492(这是所有单元格的确切高度,我已经证实了这一点)但看起来最终值不适用于tableView框架。你有什么想法吗?
self.estimatedRowHeight = 0