状态栏隐藏导航栏

Status Bar Hides The Navigation Bar

我正在开发一个 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)
   }

你有什么建议我可以把代码放在一个地方来解决问题吗?

像这样尝试

// 创建一个新的 class 类型的 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)
    }
}

使用自动布局并将您的视图固定到顶部布局指南,或使用新的安全区域布局指南。要启用它,请在故事板的文件检查器中勾选以下选项。