我在swift中使用iOS应用程序.我使用UITabBarController作为rootViewController.我在一个viewController中有视频列表.此viewController仅支持纵向模式,用户选择视频,然后使用showViewController方法输入playerController,这可以同时支持方向(纵向和横向模式).如果视频完成则播放器控制器弹出到视频列表控制器.一切都很好,但用户可以在视频结束时旋转屏幕(如剩余时间1或0秒),然后视频列表viewController进入横向模式.我已尝试使用此代码在纵向模式下设置播放器方向.
let value = UIInterfaceOrientation.Portrait.rawValue UIDevice.currentDevice().setValue(value, forKey: "orientation")
但没有奏效.如何解决这个问题.
要在模式下锁定viewController,请执行以下操作:
在你的AppDeletegate中添加:
var shouldSupportAllOrientation = false func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { if (shouldSupportAllOrientation == true){ return UIInterfaceOrientationMask.All } return UIInterfaceOrientationMask.Portrait }
现在转到每个视图并添加以下内容viewWillAppear
:
仅限Portait模式
let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate appdelegate.shouldSupportAllOrientation = false
所有模式
let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate appdelegate.shouldSupportAllOrientation = true
更新
如果要在更改视图/选项卡时再次从横向回到纵向,请添加以下代码
let value = UIInterfaceOrientation.Portrait.rawValue UIDevice.currentDevice().setValue(value, forKey: "orientation")
Swift 3.x版本
在AppDelegate类中添加它
var shouldSupportAllOrientation = false func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { if (shouldSupportAllOrientation == true){ return UIInterfaceOrientationMask.all } return UIInterfaceOrientationMask.portrait }
在viewController中添加它
// Portrait mode let appdelegate = UIApplication.shared.delegate as! AppDelegate appdelegate.shouldSupportAllOrientation = false // All modes let appdelegate = UIApplication.shared.delegate as! AppDelegate appdelegate.shouldSupportAllOrientation = trueSwift 4版本:
在AppDelegate中,添加以下内容:
var shouldSupportOrientation: UIInterfaceOrientationMask = .portrait func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { return shouldSupportOrientation }
在每个viewController中添加以下内容:
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) let appdelegate = UIApplication.shared.delegate as! AppDelegate appdelegate.shouldSupportOrientation = .portrait // set desired orientation let value = UIInterfaceOrientation.portrait.rawValue // set desired orientation UIDevice.current.setValue(value, forKey: "orientation") }
这将锁定您的视图并旋转它.