如何在导航栏上方添加视图? 我有一个自定义的导航控制器,我想在导航栏上方显示一个视图(如在屏幕上),因此它应该在其他ViewController上可见
如果解决方案在情节提要上,那将很棒。
试图在UIWindow上添加没有帮助。
答案 0 :(得分:1)
好吧,据我所知(通过您的评论答复,尽管仍不是100%清晰),最好的解决方案是使导航栏透明,以便您可以看到任何navigationController-在其下方显示了视图控制器。为此,我建议对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
}
}
使用viewWillAppear
子类的UIViewController
中的前两个方法之一,可以使导航栏完全透明,并带有statusBar文本+ wifi /电池指示器,根据需要为黑色或白色。通过此操作,您可以通过将约束固定在view.bounds.topAnchor
上来在导航栏中 下显示任何内容。例如。带有白色statusBar
文本的透明导航控制器:
class YourViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
setupTransparentNavigationBarWithWhiteText()
}
}