状态栏隐藏导航栏

时间:2019-07-14 12:57:13

标签: ios swift uinavigationbar

我正在开发一个iOS应用程序,我在其中流式传输来自youtube的实时视频。退出全屏模式后,状态栏会覆盖所有视图中的导航栏(as seen in this picture

我已经搜索了此问题,找到了一种解决方案,该解决方案是在退出全屏模式后执行的功能中添加以下代码:

   @objc func videoExitFullScreen (_ sender: Any?){
         navBar.frame.origin = CGPoint(x: 0, y: 20)
   }

此代码成功解决了该问题。但是,我需要将此代码放置在应用程序的每个控制器中。当我尝试将其放置在应用程序委托中时,它不能解决以下问题:

   @objc func videoExitFullScreen (_ sender: Any?){
         UINavigationBar.appearance().frame.origin = CGPoint(x: 0, y: 20)
   }

您有什么建议可以将代码放在一个地方,它将解决问题吗?

2 个答案:

答案 0 :(得分:0)

尝试这样

//创建一个UIViewController类型的新类

class BaseViewController : UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.videoExitFullScreen()
    }

    func videoExitFullScreen (){
        navBar.frame.origin = CGPoint(x: 0, y: 20)
    }
}

///将UIViewController替换为BaseViewController

class ViewController: BaseViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    }
}

答案 1 :(得分:0)

使用“自动布局”并将视图固定到“顶部布局指南”,或使用新的“安全区域布局指南”。要启用它,请在情节提要的文件检查器中,选中以下选项。enter image description here