IOS 8 - 更改方向后,导航栏被状态栏

时间:2015-06-14 11:41:15

标签: iphone swift ios8 orientation ytplayerview

我正在使用SWRevealViewController,我的应用程序被锁定在纵向方向。在我的一个视图控制器上,我正在使用YTPlayerView启动youtube播放器。在显示视频时,我会以编程方式将方向切换为横向:

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

当退出视频时,像这样回到肖像:

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

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

在改变方向之前

Before orientation

以横向播放视频

Youtube player

导航栏被状态栏遮挡

enter image description here

我在这里缺少什么:)?

1 个答案:

答案 0 :(得分:0)

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

  var navigationFrame = CGRect()

然后,在viewDidLoad中保存默认值

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

更改方向后,请调用此方法解决问题:

self.navigationController?.navigationBar.frame = navigationFrame

此解决方案的灵感来自@Shlomi