快速滚动时隐藏显示顶视图
Posted
技术标签:
【中文标题】快速滚动时隐藏显示顶视图【英文标题】:Hide show top view when scroll in swift 【发布时间】:2016-11-04 04:59:19 【问题描述】:我有一个自定义视图作为我的集合视图标题。但是当然,当我滚动时,标题会消失,直到我滚动回顶部。
我想要实现的一个示例就像当前的 Facebook 应用程序。向下滚动时,“实时、照片、签到”视图会隐藏,向上滚动一点后会返回。
是这样的。但我只想在滚动时隐藏并显示实时、照片和签到栏。
我目前的方法只是添加为集合视图标题。
【问题讨论】:
这里已经回答***.com/questions/28631985/… 但我想隐藏标题视图。不是导航栏 你能贴出你的问题和代码的截图吗? 添加手势识别器来处理集合视图上的滚动事件。检测手势方向以隐藏/取消隐藏标题视图。 我建议从集合视图中删除标题视图,并将其创建为集合视图顶部的单独视图。现在,在滚动更改 alpha/ 时相应地翻译独立的标题视图。 【参考方案1】:这是用滚动隐藏导航栏的代码
func scrollViewWillBeginDragging(_ scrollView: UIScrollView)
//
contentOffSet = self.channelsCollView.contentOffset.y;
func scrollViewDidScroll(_ scrollView: UIScrollView)
//
let scrollPos = self.channelsCollView.contentOffset.y ;
if(scrollPos >= contentOffSet )
//Fully hide your toolbar
UIApplication.shared.isStatusBarHidden = true
UIView.animate(withDuration: 0.5, animations:
//
//write a code to hide
self.navigationController?.isNavigationBarHidden = true
, completion: nil)
else
//Slide it up incrementally, etc.
UIApplication.shared.isStatusBarHidden = false
UIView.animate(withDuration: 0.5, animations:
//
self.navigationController?.isNavigationBarHidden = false
, completion: nil)
【讨论】:
【参考方案2】:您可以使用这些库来管理导航栏在用户滚动时的隐藏和显示:
HidingNavigationBar AMScrollingNavbar另一种方法是在你的viewWillAppear
中使用这个函数
if let navigationController = self.navigationController as? ScrollingNavigationController
navigationController.followScrollView(tableView, delay: 30.0)
【讨论】:
【参考方案3】:试试这个它在我的项目中工作:
self.navigationController.hidesBarsOnSwipe = true;
【讨论】:
这是否意味着我的自定义视图必须在我的导航栏中?抱歉,我对这种方法感到困惑。 你试过了吗? 是的,但由于某种原因,我的导航栏没有隐藏,它适用于堆栈上的第一个 vc,但后续 vc 的导航栏不会隐藏。另外,即使在第一个 vc 中,我的标题仍然存在。 这是一场表演赛。一个视图控制器从根向下堆栈以上是关于快速滚动时隐藏显示顶视图的主要内容,如果未能解决你的问题,请参考以下文章
RecycleView 如何在滚动时隐藏显示顶视图(不是工具栏)