我应该如何在 UITableView 下放置一个按钮并让它随着表格的增长而向下移动?

Posted

技术标签:

【中文标题】我应该如何在 UITableView 下放置一个按钮并让它随着表格的增长而向下移动?【英文标题】:How should I place a button under UITableView and have it move down as the table grows? 【发布时间】:2019-07-10 14:18:10 【问题描述】:

要求: 我有一张桌子和一个需要放在屏幕上的按钮。该表可以有零到多行。按钮需要在表格内容底部下方至少 40 pts,并且在屏幕底部上方至少 83 pts。所以当只有几行时,按钮离表格的最后一行很远,但是当有很多行时,按钮可能直到用户向下滚动表格时才会出现在屏幕上。

我考虑过使用 UITableView 页脚,但它总是将按钮放在表格内容的最后一行之后。

现在我正在考虑使用 UIScrollView 并将表格和按钮放置在随着表格内容增长而增长的视图中。表格高度约束也会增长。我会在按钮上使用不等式约束,因此它始终位于表格底部下方至少 40 pts 和视图底部上方至少 83 pts。

还有更好的方法吗?我描述的似乎有点复杂。

短桌时的UI设计:

当表格很长并且滚动到屏幕外时,我没有图片,但是按钮在最后一行和滚动视图底部之间有间距

【问题讨论】:

您可以使用FooterView 作为您的UITableView @EmreCiftci FooterView 会在我的表格的最后一行之后立即放置按钮,无论行数如何,对吧? 使用不等式约束是更好的方法。但也请在选择 uitableview 后分享 viewcontroller 的屏幕截图。这样我们就可以解决您遇到的具体问题。 @MRizwan33 已更新。希望它能澄清我想要完成的工作 如果表格视图中有滚动,您希望您的按钮停在屏幕的底部。如果表格视图中没有滚动,那么您希望您的按钮位于表格视图的右下方? 【参考方案1】:

这可以通过以下三个约束来实现:-

    设置 tableView 高度约束 (Constraint1)。根据 tableView 内容调整这个约束值。如果单元格高度是恒定的,那么这个约束的值将是(单元格数 * 单元格高度) 设置从 tableView 底部到按钮顶部的约束 (Constraint2)。此值将 >= 40,优先级等于 Constraint1,默认值为 1000。 设置从超级视图底部到按钮底部的约束 (Constraint3)。 this 的值为 83,其优先级应设置为小于 Constraint1 和 Constraint2(如 800 或其他)

所以当表格视图内容较少时,会考虑Constraint3从底部开始的83填充,因为Constraint2已经准备好从40进一步拉长。但是当内容增加时,当Constraint2和Constraint3发生冲突时,后者不会被考虑,因为它的优先级较低。

【讨论】:

在滚动视图中? @vincent-joy 不,您不必使用滚动视图。只是一个视图控制器,里面有一个表格视图和按钮。 哦,我想滚动我需要滚动视图。因此,如果表格长到足以将按钮从屏幕上按下,我就可以向下滚动以找到它?我试试看。 哦,是的,我认为你是对的。其实我没有考虑过这种情况。请尝试将表格视图和按钮也放在滚动视图中。【参考方案2】:

另一种解决方案是添加带有自定义内容的页脚表格视图。任何 tableview 都有页眉和页脚视图,可以根据您的喜好进行设计。

在我的例子中(仅举例)我设置了 2 个 UIViews,里面有一个标签(颜色只是为了向你展示视图),你可以用一个按钮替换标签并更改背景颜色。要显示或不显示,您可以动态更改页脚高度,或者隐藏或显示视图,具体取决于您的目的。

希望有帮助:)

【讨论】:

以上是关于我应该如何在 UITableView 下放置一个按钮并让它随着表格的增长而向下移动?的主要内容,如果未能解决你的问题,请参考以下文章

iphone开发:如何在UITableView上放置一个UIView [重复]

当在 UITableView(在另一个笔尖/视图上)上按下单元格时,如何导航到笔尖(视图)?

如何在 UITableView 的索引列表中实现放大镜? [关闭]

我应该如何格式化带有部分的 UITableView 的传入 JSON

UITableView 点击并按住 + 拖放

带有 3 个 UITableViews 的 UIScrollView