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