Ale*_*nov 4 uitableview autolayout swift
我需要在 tableView 单元格(实际上,一个单元格中有两个表)中有一个嵌套的 UITableView 来显示具有动态内容的不同列表(因此,我需要动态高度)。我的嵌套表不会滚动\xe2\x80\x94我只需要它们来排序不同类型的元素,如文本、图片、字段等。更清楚地说\xe2\x80\x94第一级是操作级别,每个操作可以具有可变数量的指令和动作。指令和操作应并排放置,操作单元应具有最高表格的大小。
\n\n嵌套表格没有问题,但我遇到了自动布局的问题。我\xe2\x80\x99已经尝试了我能找到的一切,但没有成功。
\n\n我尝试了嵌套表视图的高度约束,我根据 tableview.contentsize.hight 创建操作单元格进行更新,但 contentsize 似乎根据每行的估计大小而不是实际大小返回高度。
\n\n我尝试重写嵌套表的内在内容大小:
\n\nUITableView {\n\n override var contentSize:CGSize {\n didSet {\n self.invalidateIntrinsicContentSize()\n }\n }\n\n override var intrinsicContentSize: CGSize {\n self.layoutIfNeeded()\n return CGSize(width: UIViewNoIntrinsicMetric, height: contentSize.height)\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n没有什么能正常工作。有什么想法可以解决吗?
\n\n先感谢您。
\n设置内部表格视图我的自定义类AGTableView和高度约束都是必需的,
这个类设置contantSize相同的表视图高度约束。
查看 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
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:还要设置一个estimatedRowHeight
self.rowHeight = UITableViewAutomaticDimension
self.estimatedRowHeight = height
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4950 次 |
| 最近记录: |