如何在导航栏顶部添加视图
How to add view on top of navigation bar
如何在导航栏上方添加视图?
我有一个自定义导航控制器,我想在导航栏上方显示一个视图(就像在屏幕上一样),因此它应该在其他 ViewControllers 上可见
如果解决方案出现在故事板上,那就太好了。
尝试添加 UIWindow 没有帮助。
Swift4.2,Xcode10+
好的,据我所知(通过您的评论回复,虽然它仍然不是 100% 清楚),解决您问题的最佳方法是使导航栏透明,这样您就可以看到任何navigationController-presented 视图控制器在它下面。为此,我建议对 UIViewController
进行以下扩展:
extension UIViewController {
func setupTransparentNavigationBarWithBlackText() {
setupTransparentNavigationBar()
//Status bar text and back(item) tint to black
self.navigationController?.navigationBar.barStyle = .default
self.navigationController?.navigationBar.tintColor = .black
}
func setupTransparentNavigationBarWithWhiteText() {
setupTransparentNavigationBar()
//Status bar text and back(item) tint to white
self.navigationController?.navigationBar.barStyle = .blackTranslucent
self.navigationController?.navigationBar.tintColor = .white
}
func setupTransparentNavigationBar() {
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.backgroundColor = .clear
self.navigationController?.navigationBar.isTranslucent = true
}
}
使用 UIViewController
子类的 viewWillAppear
中的前两种方法中的任何一种都可以使导航栏完全透明,状态栏文本 + wifi/battery 指示器为黑色或白色想要的。由此,您可以通过将约束固定到 view.bounds.topAnchor
来在导航栏 下显示任何内容 。例如。对于带有白色 statusBar
文本的透明导航控制器:
class YourViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
setupTransparentNavigationBarWithWhiteText()
}
}
如何在导航栏上方添加视图? 我有一个自定义导航控制器,我想在导航栏上方显示一个视图(就像在屏幕上一样),因此它应该在其他 ViewControllers 上可见
如果解决方案出现在故事板上,那就太好了。
尝试添加 UIWindow 没有帮助。
Swift4.2,Xcode10+
好的,据我所知(通过您的评论回复,虽然它仍然不是 100% 清楚),解决您问题的最佳方法是使导航栏透明,这样您就可以看到任何navigationController-presented 视图控制器在它下面。为此,我建议对 UIViewController
进行以下扩展:
extension UIViewController {
func setupTransparentNavigationBarWithBlackText() {
setupTransparentNavigationBar()
//Status bar text and back(item) tint to black
self.navigationController?.navigationBar.barStyle = .default
self.navigationController?.navigationBar.tintColor = .black
}
func setupTransparentNavigationBarWithWhiteText() {
setupTransparentNavigationBar()
//Status bar text and back(item) tint to white
self.navigationController?.navigationBar.barStyle = .blackTranslucent
self.navigationController?.navigationBar.tintColor = .white
}
func setupTransparentNavigationBar() {
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.backgroundColor = .clear
self.navigationController?.navigationBar.isTranslucent = true
}
}
使用 UIViewController
子类的 viewWillAppear
中的前两种方法中的任何一种都可以使导航栏完全透明,状态栏文本 + wifi/battery 指示器为黑色或白色想要的。由此,您可以通过将约束固定到 view.bounds.topAnchor
来在导航栏 下显示任何内容 。例如。对于带有白色 statusBar
文本的透明导航控制器:
class YourViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
setupTransparentNavigationBarWithWhiteText()
}
}