问题描述
我在 UITableView
中有 UIButton
和 UIViewController
。
UIViewController -> UIView -> UITableView
-> UIButton
UITableView
高度设置为根据其内在内容大小进行相应更改。当 UITableView 中有更多行数时,高度会增加,但我不想增加 UIButton
不可见。我不想在那个 UIScrollView
中有 UIViewController
。 UIButton 的约束设置为距底部 25 像素,距 UITbaleView 25 像素,宽度设置为屏幕宽度的 70%。我将 UITableView 的约束设置为距顶部 10 像素,宽度与超级视图相同,高度设置为 590。我不确定如何设置优先级,以便即使 UITableView 中的行数更多,UIButton 也会可见。
override func updateViewConstraints() {
tableViewHeight.constant = TableIb.contentSize.height
super.updateViewConstraints()
}
解决方法
限制按钮:
- 距 tableView 底部 25 点
- 底部小于或等于 -25 点距视图底部(安全区域)
为您的 tableViewHeight 约束设置小于要求的优先级。
例如:
button.topAnchor.constraint(equalTo: tableView.bottomAnchor,constant: 25.0).isActive = true
button.bottomAnchor.constraint(lessThanOrEqualTo: view.safeAreaLayoutGuide.bottomAnchor,constant: -25.0).isActive = true
// whatever you want to start your tableView height at...
// it doesn't really matter,as I assume you'll be immediately
// changing its .constant value
tableViewHeight = tableView.heightAnchor.constraint(equalToConstant: 30.0)
tableViewHeight.priority = .defaultHigh
tableViewHeight.isActive = true
按钮将从 tableView 底部“粘住” 25 pts,当您更改 tableViewHeight.constant
时,它将“按下按钮”但仅直到它离视图底部 25 pts (安全区)。
作为旁注,养成用点代替像素,用视图宽度代替的习惯屏幕宽度。
或者,将您的按钮嵌入到 UIView
中并将该视图设置为 viewForFooterInSection
。它将“粘”到 tableView 的底行,但在 tableView 需要滚动时保持可见。
这将使您无需不断调整 tableView 的大小。