开发过程中,会遇到导航栏透明问题。如下图的需求:
要实现这个效果要注意到的点:
1、系统有提供隐藏导航栏的方法
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if navigationController?.navigationBarHidden == false {
navigationController?.setNavigationBarHidden(true, animated: true)
}
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
if navigationController?.navigationBarHidden == true {
navigationController?.setNavigationBarHidden(false, animated: true)
}
}
2、隐藏导航栏后要自己加一个视图,拥有返回按钮,按钮要足够宽,保证点击范围,同时返回箭头要靠左
3、导航栏隐藏之后,返回手势会失效
这里我们需要创建一个navigationcontroller 类增加如下代码:
override func viewDidLoad() {
super.viewDidLoad()
if respondsToSelector(Selector("interactivePopGestureRecognizer")) {
interactivePopGestureRecognizer?.delegate = self
delegate = self
}
// Do any additional setup after loading the view.
}
注意要加上UINavigationControllerDelegate,UIGestureRecognizerDelegate
然后在storyboard 中设置navigationvc 的类为这个类
代码戳这 ——> TranslucentNavigationController
网友评论