UITableView 滚动 UINavigationBar

Posted

技术标签:

【中文标题】UITableView 滚动 UINavigationBar【英文标题】:UITableView scrolling UINavigationBar 【发布时间】:2012-10-21 20:48:52 【问题描述】:

如何根据 UITableView 滚动来滚动 UINavigationBar,我的意思是:

当用户向下滚动 UITableView 时,UINavigationBar 应该随着 UITableView 滚动并消失; 当用户向上滚动 UITableView 时,UINavigationBar 应该固定在视图顶部。

我想要与question 类似的效果,但我需要使用 UINavigationBar 来实现相同的效果,而不是 UISearchBar,我已经尝试过链接中的代码。请任何一段代码或源代码赞赏。

提前致谢。

【问题讨论】:

UINavigationBar 是由UINavigationController 提供的吗?如果是这样,UINavigationController 的文档状态您绝不能更改 navigationBars 框架或边界 这是一个新的 UINavigationBar。问题是怎么回事?我已经尝试在用户滚动 UITableView 时将 UINavigationBar 框架设为静态,但没有成功。 为了让它保持不动,在充当 tableViewDelegate 的对象上实现scrollViewDidScroll:,然后在其中更改导航栏的框架 我没有使用导航栏,而是添加了一个uiview。我也使用了 scrollViewDidScroll 委托,但我的方法有点不同。您可能想查看下面的源代码dropbox.com/s/b2c0zw6yvchaia5/FailedBanks.zip?dl=0 【参考方案1】:

您可以查看this library 的代码。它的行为略有不同(它模仿 Chrome ios7 应用程序),但您可以轻松地修改导航栏处理以满足您的需求。

【讨论】:

【参考方案2】:

我发现了一篇可能会有所帮助的有趣帖子。 http://horseshoe7.wordpress.com/2012/05/18/uinavigationbar-that-scrolls-away/

【讨论】:

【参考方案3】:

我会通过隐藏ViewControllernavigationBar 并在tableView 的第一部分的标题中添加一个假的UINavigationBar 来做到这一点。

【讨论】:

我已经考虑过了,但是当用户位于 UITableView 的顶部并且仍在向上滚动时,如何使 UINavigationBar 保持静态?检查我提供的链接中的图像。跨度> 嗯...我明白你的意思了。可能,您可以访问 UITableViewController 的 scrollView 委托方法,而不是隐藏导航栏,并使用滚动视图的偏移量来调整 UINavigationBar 的框架(或中心点)。这样,您可以在必要时将其向上移动,但不能将其向下移动到其正常位置以下。不过我从来没有尝试过。

以上是关于UITableView 滚动 UINavigationBar的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 滚动不滚动

为啥滚动 UITableView 比滚动 UIScrollView 响应更快?

使用 UITableView 在 UITableView 上自动滚动 UIImageView

滚动时禁用 UITableView 垂直反弹

是否可以滚动分层在 UITableView 之上的滚动视图?

拦截 UITableView 滚动触摸