【问题标题】:How to lock a view as the user scrolls如何在用户滚动时锁定视图
【发布时间】:2013-07-16 14:28:03
【问题描述】:

我是 iphone 开发的新手,我试图弄清楚当用户滚动窗口时,如何在视图到达屏幕顶部后修复它。然后,当窗口再次向下滚动以返回其原始位置时,视图将解锁。我在一些应用程序上看到过这个,比如 instagram(带有用户名分隔符)。

这种设计模式有特定的名称吗?


可以在http://mashable.com/ 上看到一个示例(虽然不是 iPhone)——请查看“The New Stuff”、“The Next Big Thing”和“What's Hot”栏。向下滚动时查看它是如何锁定的

【问题讨论】:

    标签: iphone ios objective-c


    【解决方案1】:

    如果我是正确的,您是在尝试在“通讯录”应用中实现类似 UITableView 的功能吗?

    它将UITableView 的部分用于排序的字母并始终显示在顶部。

    看看this questioncreate custom section headers

    【讨论】:

    • 我补充说您可以使用this创建自定义部分
    【解决方案2】:

    我的解决方案是

    1. 创建一个UITableView
    2. 单独创建一个UIView,用作固定表头
    3. 设置表格的tableHeaderView 属性以符合UIView's 框架
    4. 由于 UITableView 是从 UIScrollView 继承的,因此您可以依赖 scrollViewDidScroll 方法,在该方法中,当滚动表格时 Y 坐标发生变化时,我会正确调整我的固定标题。

    也可以有其他类似的解决方案,但这种特殊解决方案的优势在于您可以在整个滚动过程中轻松操纵固定标题的 gui 元素。

    一个例子总是比写下细节更好,所以我为你(希望在 SO 的其他人)创建了一个示例项目(当然是快速的),你可以在 github 上找到它: https://github.com/codedad/SO_Fixed_TableHeader_iOS

    【讨论】:

    • 感谢代码示例。但在这个例子中,视图始终是第一个元素,固定标题......在我的解释中,我希望它更靠近视图,比如第三个元素。
    • 这取决于您希望此标头锁定的位置,因为 1)您必须实现 tableView:viewForHeaderInSection 来分配例如。第 3 部分自定义视图 2) 正确修改我的示例,尤其是 scrollViewDidScroll,您只能根据滚动来更改视图上的某些内容。目前我没有更多时间,但假期过后;)我尝试修改我的示例..
    • 谢谢!我试试看!
    猜你喜欢
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多