如何在导航栏顶部添加视图

时间:2019-04-24 11:01:05

标签: ios swift storyboard

如何在导航栏上方添加视图? 我有一个自定义的导航控制器,我想在导航栏上方显示一个视图(如在屏幕上),因此它应该在其他ViewController上可见

如果解决方案在情节提要上,那将很棒。 Like that

试图在UIWindow上添加没有帮助。

1 个答案:

答案 0 :(得分:1)

Swift 4.2,Xcode 10 +

好吧,据我所知(通过您的评论答复,尽管仍不是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()
    }
}