纵向模式除了一个视图之外的所有视图都以编程方式旋转到UINavigationController下的横向

时间:2016-08-15 11:03:04

标签: ios swift swift2 orientation screen-orientation

首先,我的项目层次结构:

tab bar controller -> navigation master -> view controllers

我想要在横向模式下旋转一页。

我的项目与所有设备方向模式兼容。

enter image description here

我手动冻结了所有自动旋转的视图控制器,返回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?),但应用不会轮换。我想是因为使用标签栏和导航控制器,事情必须以不同方式完成,但不知道具体如何。任何人都可以帮忙吗?

0 个答案:

没有答案