【问题标题】:Status Bar Hides The Navigation Bar状态栏隐藏导航栏
【发布时间】:2019-07-15 13:39:03
【问题描述】:

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

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

【问题讨论】:

  • 创建一个 baseViewController 并放入 viewWillAppear 方法,它会解决你的问题。

标签: ios swift uinavigationbar


【解决方案1】:

这样试试

//新建一个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)
    }
}

【讨论】:

  • 它不起作用:( ..我认为这个语句中的问题 UINavigationBar.appearance().frame.origin = CGPoint(x: 0, y: 20)。当我拖动导航栏时从情节提要并使用此 navBar.frame.origin = CGPoint(x: 0, y: 20) 它可以工作..我将如何在所有内容上生成它
  • @shadenalsubaiheen 是在退出全屏模式后调用 viewWillappear 吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多