为什么我的导航栏不能在滑动时隐藏?

时间:2017-07-15 20:07:33

标签: ios swift xcode swift3 uinavigationcontroller

当我向上滑动时,我试图让我的导航栏隐藏,当我向下滑动时再次出现。我打印功能工作,但我不知道为什么我的导航栏不隐藏。另外,如何将部件放在顶部,即在滑动时隐藏的图像和徽标。 enter image description here

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)


            print("Hide")
        }, completion: nil)

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

            print("Unhide")
        }, completion: nil)    
    }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试以这种方式隐藏导航栏

navigationController?.hidesBarsOnSwipe = true

当您向上滚动时,这将自动隐藏栏,并在向下滚动时显示栏。它还将处理调整大小和动画。

您的代码存在的一个问题是,在您完成拖动之前不会触发scrollViewWillEndDragging,并且可能会在一次拖动操作中多次触发