我需要在 tableView 单元格中有一个嵌套的 UITableView(实际上,一个单元格中有两个表)以显示具有动态内容的不同列表(因此,我需要动态高度)。我的嵌套表格不会滚动——我只需要它们来排序不同种类的元素,如文本、图片、字段等。更清楚——第一级是操作级别,每个操作都可以有可变数量的指令和行动。指令和 Action 应并排放置,操作单元格的大小应与最高的 table 一样大。
嵌套表格没有问题,但我遇到了自动布局的问题。我已经尝试了所有我能找到的方法,但没有成功。
我尝试了嵌套 TableView 的高度约束,我在从 tableview.contentsize.hight 创建操作单元格时对其进行了更新,但似乎 contentsize 返回的高度基于每行的估计大小,而不是实际大小。
我尝试重写嵌套表的固有内容大小:
UITableView {
override var contentSize:CGSize {
didSet {
self.invalidateIntrinsicContentSize()
}
}
override var intrinsicContentSize: CGSize {
self.layoutIfNeeded()
return CGSize(width: UIViewNoIntrinsicMetric, height: contentSize.height)
}
}
一切正常。有什么解决办法吗?
提前致谢。
最佳答案
Set Inner tableview 我的自定义类 AGTableView
和 height Constraint 都是必需的,
这个类设置了contantSize
相同的表格 View 高度约束。
查看 Github AutoHeightIncrementTableViewDemo
class AGTableView: UITableView {
fileprivate var heightConstraint: NSLayoutConstraint!
override init(frame: CGRect, style: UITableViewStyle) {
super.init(frame: frame, style: style)
self.associateConstraints()
defaultInit()
}
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.associateConstraints()
defaultInit()
}
func defaultInit(){
self.keyboardDismissMode = .onDrag
self.showsVerticalScrollIndicator = false
self.showsHorizontalScrollIndicator = false
self.tableFooterView = UIView(frame: .zero)
self.tableHeaderView = UIView(frame: .zero)
self.sectionFooterHeight = 0
self.sectionHeaderHeight = 0
}
override open func layoutSubviews() {
super.layoutSubviews()
if self.heightConstraint != nil {
self.heightConstraint.constant = self.contentSize.height
}
else{
print("Set a heightConstraint to set cocontentSize with same")
}
}
func associateConstraints() {
// iterate through all text view's constraints and identify
// height
for constraint: NSLayoutConstraint in constraints {
if constraint.firstAttribute == .height {
if constraint.relation == .equal {
heightConstraint = constraint
}
}
}
}
}
注意:同时设置一个estimatedRowHeight
self.rowHeight = UITableViewAutomaticDimension
self.estimatedRowHeight = height
关于swift - 嵌套的 UITableView 动态高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48941167/