我正在使用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没有被状态栏偏移,导致状态栏位于导航栏的顶部(参见屏幕)。
在改变方向之前
以横向播放视频
导航栏被状态栏遮挡
我在这里缺少什么:)?
答案 0 :(得分:0)
声明一个变量,该变量将缓存初始导航栏的大小
var navigationFrame = CGRect()
然后,在viewDidLoad中保存默认值
override func viewDidLoad() {
if let navFrame = self.navigationController?.navigationBar.frame {
navigationFrame = navFrame
}
}
更改方向后,请调用此方法解决问题:
self.navigationController?.navigationBar.frame = navigationFrame
此解决方案的灵感来自@Shlomi