快速显示和隐藏导航栏

时间:2018-09-15 10:40:54

标签: ios swift uinavigationcontroller uinavigationbar

我要创建:不带导航栏的显示视图,而如果滚动从顶部> = 100高度到底部的距离,则显示导航栏。

从底部滚动时:如果到顶部的距离<= 100高度需要隐藏 我尝试了这个,但是对我没有帮助

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
    if(velocity.y>0) {
        UIView.animate(withDuration: 2.5, delay: 0, options: UIViewAnimationOptions(), animations: {
            self.navigationController?.setNavigationBarHidden(true, animated: true)
        }, completion: nil)

    } else {
        UIView.animate(withDuration: 2.5, delay: 0, options: UIViewAnimationOptions(), animations: {
            self.navigationController?.setNavigationBarHidden(false, animated: true)
        }, completion: nil)
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用scrollViewDidScroll完成所需的功能。我已经实施并测试了它,并且可以正常工作。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        print("scroll Content : \(scrollView.contentOffset.y)")

            if scrollView.contentOffset.y >= 100
            {
                UIView.animate(withDuration: 2.5, animations: {
                    self.navigationController?.setNavigationBarHidden(true, animated: true)
                })

            }
            else
            {

                UIView.animate(withDuration: 2.5, animations: {
                    self.navigationController?.setNavigationBarHidden(false, animated: true)
                })

            }

    }

在viewDidLoad()中,您可以隐藏导航栏,以便在打开应用程序时隐藏时间导航栏。

希望这会对您有所帮助。