我有一个viewController,我想在其中有两个1 tableView和一个childViewController。
我的约束如下:
NSLayoutConstraint.activate([
tableView.topAnchor.constraint(equalTo: view.topAnchor),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tableView.bottomAnchor.constraint(equalTo: artistVC.view.topAnchor),
])
NSLayoutConstraint.activate([
artistVC.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
artistVC.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
artistVC.view.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
当我以这种方式设置时,屏幕上只显示childVC。我没有看到tableView。我想让tableView尽可能多地扩展,然后让childVC可以滚动到底部。
Height and scrollable content size are ambiguous
Height and vertical positions are ambiguous
但是我不能自己设置高度,因为我不知道tableViewCell的高度是什么。
有什么建议吗?我试过改变内容拥抱和内容压缩阻力,但我没有找到任何运气。
答案 0 :(得分:2)
表视图和其他可滚动视图没有intrinsicContentSize
。例如,如果参与的观看次数是UIImageView
和UILabel
,则可以根据其内容调整大小,但因为您的观看次数为UITableView
, UIView
(两者都不能自动调整大小,尽管你对UIView
有足够的限制而不是模糊不清)你需要自己调整大小。
要获得所需的行为,您需要子类UITableView
并覆盖intrinsicContentSize
,否则您需要设置高度约束。无论哪种方式,您都需要自己计算正确的高度。内容拥抱和压缩阻力允许自动布局在竞争intrinsicContentSizes
之间进行判断,因此他们在这种情况下没有帮助。
例如:
final class SizingTableView: UITableView {
override var intrinsicContentSize: CGSize {
return CGSize(width: bounds.width, height: <# Some appropriate height #>)
}
}
然后在您的storyboard或xib中将表视图的类更改为SizingTableView
,您可以在大小检查中为表视图的内在内容大小设置设计时占位符,以解决任何警告我们的错误