Dum*_*pen 35 uitableview ios swift
我有一个View,里面有两个标签和一个Table View.我希望标签1始终位于我的表视图上方并标记为2,位于表格视图下方.问题是表视图需要自动调整高度或增加的含义.
现在我有一个约束说,表视图的高度总是等于85,并且a @IBOutlet到高度约束,我可以改变常量.
我猜我需要将常数更改为所有单元格的高度,但我不确定如何.
joe*_*ern 57
您必须updateViewConstraints()在UIViewController中覆盖并将高度约束的常量设置为tableView.contentSize.height:
override func updateViewConstraints() {
tableHeightConstraint.constant = tableView.contentSize.height
super.updateViewConstraints()
}
Run Code Online (Sandbox Code Playgroud)
然后你必须确保它Label2有一个顶部约束greaterThanOrEqual到表视图的底部.而且,当表视图的大于可用高度时,您还必须更改表视图的高度约束的优先级Required,High以避免冲突的约束contentHeight.
Ham*_*ova 41
还有另一种解决方案.你可以在tableview'contentSize'变量上添加观察者.表视图内容更改时的自身大小.
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var tableHeightConstraint: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
tableView.layer.removeAllAnimations()
tableHeightConstraint.constant = tableView.contentSize.height
UIView.animate(withDuration: 0.5) {
self.updateConstraints()
self.layoutIfNeeded()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29090 次 |
| 最近记录: |