Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在滚动iOS上显示导航栏_Ios_Swift_Uinavigationbar - Fatal编程技术网

如何在滚动iOS上显示导航栏

如何在滚动iOS上显示导航栏,ios,swift,uinavigationbar,Ios,Swift,Uinavigationbar,我找到了很多关于如何在滚动时隐藏导航栏的资源,但我希望在开始时隐藏导航栏,然后在开始滚动时显示。类似于Design+Code应用程序中的动画:您可以使用UIScrollViewDelegate 下面是隐藏导航栏和带有滚动条的工具栏的示例代码: import UIKit class ViewController: UIViewController, UIScrollViewDelegate { @IBOutlet weak var toolBar: UIToolbar! @IB

我找到了很多关于如何在滚动时隐藏导航栏的资源,但我希望在开始时隐藏导航栏,然后在开始滚动时显示。类似于Design+Code应用程序中的动画:

您可以使用UIScrollViewDelegate

下面是隐藏导航栏和带有滚动条的工具栏的示例代码:

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet weak var toolBar: UIToolbar!
    @IBOutlet weak var webV: UIWebView!
    var lastOffsetY :CGFloat = 0
    override func viewDidLoad() {
        super.viewDidLoad()

        webV.scrollView.delegate = self
        let url = "http://apple.com"
        let requestURL = NSURL(string:url)
        let request = NSURLRequest(URL: requestURL!)
        webV.loadRequest(request)
    }

    //Delegate Methods
    func scrollViewWillBeginDragging(scrollView: UIScrollView){
        lastOffsetY = scrollView.contentOffset.y
    }

    func scrollViewWillBeginDecelerating(scrollView: UIScrollView){

        let hide = scrollView.contentOffset.y > self.lastOffsetY
        self.navigationController?.setNavigationBarHidden(hide, animated: true)
        toolBar.hidden = hide
    }
}

使用
willBeginDragging
didendragging
可以完成您想要的任务。这里有一个简化版本,您可能需要对其进行一些修改,以获得所需的效果,但这是一个起点

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        navigationController?.setNavigationBarHidden(true, animated: false)

    }
}

extension ViewController: UIScrollViewDelegate {
    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        navigationController?.setNavigationBarHidden(false, animated: true)
    }

    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        navigationController?.setNavigationBarHidden(true, animated: true)
    }
}