首先,我的项目层次结构:
tab bar controller -> navigation master -> view controllers
我想要在横向模式下旋转一页。
我的项目与所有设备方向模式兼容。
我手动冻结了所有自动旋转的视图控制器,返回false:
override func shouldAutorotate() -> Bool {
return false
}
除了我想要旋转的那个。小号
我想在视图控制器中尝试这个,我希望以横向显示:
let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
但什么也没做。
另外,我尝试了这种方法的问题。当应用程序以横向方式启动时,视图以横向显示并且无法旋转。我设法用这个方法修复它在我的app delegate中:
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
if(self.restrictRotation == false){
return UIInterfaceOrientationMask.Portrait//UIInterfaceOrientationMaskPortrait
}
else{
return UIInterfaceOrientationMask.All//UIInterfaceOrientationMaskAll
}
}
在viewDidLoad中将var设置为true,我想允许旋转:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.restrictRotation = true
let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
我已经使用调试器进行了测试,调用了方法application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?)
,但应用不会轮换。我想是因为使用标签栏和导航控制器,事情必须以不同方式完成,但不知道具体如何。任何人都可以帮忙吗?