- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个 View ,它是 UITableView
,但是我想锚定一个“写评论”UITextField
在屏幕底部。您可以在“ secret ”应用程序的这些屏幕截图中看到一个示例 - 无论您向上还是向下滚动表格 View 项目,“写评论(匿名)”和“发布”按钮都固定在屏幕底部.
实现这一目标的最佳方法是什么?
我应该嵌入 UITableViewController
变成 UIViewController
与 UIView
锚定到屏幕底部,而tableview 锚定到该 View 的顶部?
这是某种UITableView
节页脚?
非常感谢任何建议。
最佳答案
你可以继承 UITableView
并添加一个底部 View (不要与 tableview 的 footerView
混淆)。由于 UITableView
是 UIScrollView
的子类,您可以更改其contentInsets
这样表格 View 的内容仍将滚动到您的底部 View 上方。tableView.contentInsets = UIEdgeInsetsMake(0, 0, 0, bottomViewHeight);
下一步是使底部 View 具有粘性,即与 tableview 的底部一起 float 。您可以通过多种方式实现这一目标。这里有两个建议:
1)直接操作框架
通过符合 UITableViewDelegate
你自动符合UIScrollViewDelegate
.您可以通过检查 UITableView.h
中的协议(protocol)声明来看到这一点。 :@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>
然后执行scrollViewDidScroll:(UIScrollView *)scrollView
并更改底部 View 的 y 偏移量以始终将其定位在 View 的底部。 UIScrollView
的contentOffset
属性用于确定 ScrollView 向下滚动了多远。每次 ScrollView 滚动时都会调用此方法,因此看起来底部 View 会粘在表格 View 的底部。
2)使用自动布局
虽然仍在更改 contentInsets
如上,您可以通过使用自动布局约束来实现粘性效果。通过将底部 View 固定到 ScrollView 的边缘,它会自动为您创建粘性效果。到目前为止,这是我推荐的方法,因为它节省了代码行,同时使用了尽可能高的抽象级别。
我用 this category由 Florian Kugler在代码中实现自动布局时。
This technical note ,但与该问题不严格相关,描述了如何将自动布局与 ScrollView 一起使用。
关于ios - 在 UITableViewController 底部锚定 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22168479/
我是一名优秀的程序员,十分优秀!