快速滚动时隐藏显示顶视图

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 如何在滚动时隐藏显示顶视图(不是工具栏)

向下滚动时隐藏屏幕的一部分

iOS:滚动表格视图时隐藏和显示自定义导航栏

我设置滚动视图偏移以显示被键盘隐藏的文本字段。如果用户在显示键盘时滚动,则滚动视图会向下捕捉

滚动时隐藏自定义表格视图单元格标签如何解决?

如何在滚动时隐藏并显示带有动画效果的标题视图