在UITableViewController的底部锚定视图

时间:2014-03-04 09:55:04

标签: ios uitableview autolayout

我正在构建一个UITableView的视图,但是我想在屏幕底部锚定“编写评论”UITextField。您可以在“秘密”应用程序的这些屏幕截图中看到此示例 - “写一条评论(匿名)”和“发布”按钮固定在屏幕底部,无论您是向上还是向下滚动桌面视图项目

enter image description here

enter image description here

实现这一目标的最佳方法是什么?

我是否应该将UITableViewController嵌入到UIViewController中,UIView锚定在屏幕底部,而tableview固定在此视图的顶部?

这是某种UITableView部分页脚吗?

任何建议都非常感谢。

3 个答案:

答案 0 :(得分:2)

您可以继承UITableView并添加底部视图(不要与tableview的footerView混淆)。由于UITableViewUIScrollView的子类,因此您可以更改其contentInsets,以便tableview的内容仍会在您的底部视图上方滚动。

tableView.contentInsets = UIEdgeInsetsMake(0, 0, 0, bottomViewHeight);

下一步是使底视图变粘,即浮动在tableview的底部。您可以通过多种方式实现这一目标。以下是两条建议:

1)直接操作框架

通过符合UITableViewDelegate,您自动符合UIScrollViewDelegate。您可以通过检查UITableView.h中的协议声明来看到这一点:

@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>

然后实现scrollViewDidScroll:(UIScrollView *)scrollView并将底视图的y偏移更改为始终将其放置在视图的底部。 UIScrollView的{​​{1}}属性用于确定滚动视图滚动的距离。每次滚动视图滚动时都会调用此方法,因此底部视图会显示在桌面视图的底部。

2)使用自动布局

虽然仍然如上所述更改contentOffset,但您可以通过使用自动布局约束来实现粘滞效果。通过将底部视图固定到滚动视图的边缘,它将自动为您创建粘性效果。这是我推荐的方法,因为它保存了代码行,同时它使用了最高级别的抽象。


在代码中实现自动布局时,this category使用Florian Kugler

This technical note,但与问题没有严格关联,描述了如何使用滚动视图自动布局。

答案 1 :(得分:1)

我有应用内聊天(比如whatsapp),我有以下结构:

UIViewController
\
 - View
    \
     - UITableView
     - UIView (with textfied)

我认为这是最好的方法,因为你不会将表格数据与其他任何东西混合在一起,而且你不必在代码中加入各个部分

答案 2 :(得分:0)

如果您要求在屏幕中一次只显示一张图片相关信息,请按照它将帮助您的过程。

首先拍摄一个视图控制器,然后拍摄一个图像视图,然后将所需的按钮添加到图像视图下方,仅在图像视图下方取一个桌面视图(如果有评论显示tableview。如果没有可用的评论显示标签为“be首先评论“)。

希望这会有所帮助