5

我正在使用 SWRevealViewController 并且我的应用程序被锁定为纵向。在我的一个视图控制器上,我正在使用YTPlayerView. 显示视频时,我以编程方式将方向切换为横向,如下所示:

let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

退出视频时,回到纵向,如下所示:

let value = UIInterfaceOrientation.Portrait.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

一切正常,但引入了布局问题:导航栏 Y 没有被状态栏偏移,导致状态栏位于导航栏的顶部(见屏幕)。

方向改变前

定向前

横向播放视频

优酷播放器

导航栏被状态栏遮挡

在此处输入图像描述

我在这里想念什么:)?

4

1 回答 1

0

声明一个将缓存初始导航栏大小的变量

  var navigationFrame = CGRect()

然后,在 viewDidLoad 中保存默认值

override func viewDidLoad() {
if let navFrame = self.navigationController?.navigationBar.frame {
      navigationFrame = navFrame
    }
  }

改变方向后调用此方法解决问题:

self.navigationController?.navigationBar.frame = navigationFrame

这个解决方案的灵感来自@Shlomi

于 2018-08-01T16:20:42.667 回答