如何将UIButton固定在动态调整高度的UITableView下方?
嘿,我来帮你搞定这个布局问题!你已经给UITableView开启了自动调整行高的设置,这步走对了,接下来只需要给表格和按钮加上正确的AutoLayout约束,就能让按钮始终跟着表格的动态高度“跑”啦,不用手动计算高度~
具体约束设置步骤
- 给UITableView添加约束:
- 顶部:与父视图(或你需要的顶部容器)顶部对齐,比如设置
Top to Superview.Top,可以按需加个间距(比如20) - 左右:与父视图左右边缘对齐,添加
Leading to Superview.Leading、Trailing to Superview.Trailing约束,也可以留合适的左右间距 - 关键提醒:绝对不要给表格设置固定高度约束! 表格的高度会由内部cell的总高度自动计算
- 顶部:与父视图(或你需要的顶部容器)顶部对齐,比如设置
- 给UIButton添加约束:
- 顶部:与UITableView的底部对齐,设置
Top to TableView.Bottom,加个舒适的间距(比如15) - 水平方向:可以选择居中对齐(
Center X to Superview.Center X),或者和表格的左右边缘对齐 - 底部:如果是普通视图控制器,给按钮加
Bottom to Superview.Bottom约束并设置间距(比如20),确保按钮不会超出屏幕;如果父视图是UIScrollView,这个约束会帮助滚动视图确定滚动范围
- 顶部:与UITableView的底部对齐,设置
- 额外确认:确保每个tableViewCell内部的控件约束是完整的(从cell的顶部到底部都有连续的约束),这样系统才能准确计算每个cell的高度,进而算出整个表格的动态高度
特殊场景处理(父视图是UIScrollView)
如果你的表格和按钮是放在UIScrollView里的,更省心的方式是:
- 把UITableView和UIButton放进一个垂直方向的UIStackView里,设置StackView的
Spacing为你想要的表格与按钮的间距 - 给StackView添加上下左右与UIScrollView的约束,同时设置StackView的宽度与UIScrollView的宽度相等(避免滚动视图横向滚动)
- 这样StackView会自动根据表格的动态高度调整自身高度,按钮自然就始终在表格下方,滚动视图也能正常滚动
最后,当你更新表格数据时,记得调用tableView.reloadData(),系统会自动重新计算表格高度,按钮的位置也会自动更新到位~
内容的提问来源于stack exchange,提问作者KikX
相关产品推荐
相关产品推荐

