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】:我会通过隐藏ViewController
的navigationBar
并在tableView
的第一部分的标题中添加一个假的UINavigationBar
来做到这一点。
【讨论】:
我已经考虑过了,但是当用户位于 UITableView 的顶部并且仍在向上滚动时,如何使 UINavigationBar 保持静态?检查我提供的链接中的图像。跨度> 嗯...我明白你的意思了。可能,您可以访问 UITableViewController 的 scrollView 委托方法,而不是隐藏导航栏,并使用滚动视图的偏移量来调整 UINavigationBar 的框架(或中心点)。这样,您可以在必要时将其向上移动,但不能将其向下移动到其正常位置以下。不过我从来没有尝试过。以上是关于UITableView 滚动 UINavigationBar的主要内容,如果未能解决你的问题,请参考以下文章
为啥滚动 UITableView 比滚动 UIScrollView 响应更快?
使用 UITableView 在 UITableView 上自动滚动 UIImageView