如何在iOS 6中以编程方式更改设备方向

在iOS 5中,我们可以通过编程方式更改设备方向,如下所示:


[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

但是在iOS 6 setOrientation中已弃用,如何在iOS 6中以编程方式更改设备方向?


慕工程0101907
浏览 501回答 3
3回答

手掌心

这是我的“五美分”,已在iOS7和ARC上进行了测试[[UIDevice currentDevice] setValue:                      [NSNumber numberWithInteger: UIInterfaceOrientationPortrait]                            forKey:@"orientation"];这不会像performSelector那样生成“泄漏”警告。UIAlertView-使用此代码,当您在视图中打开UIAlertView时(会/已)出现时,您会注意到,除了该视图以外的所有视图都是纵向的(苹果,真的吗?)我无法强制视图重新定向,但是发现您在打开UIAlertView之前稍加延迟,然后视图就有时间更改方向。请注意,我将从2014年12月9日开始发布我的应用程序周,如果发布会通过或失败,我将对其进行更新。

蛊毒传说

这不能回答如何更改设备方向,而是可以帮助您的其他信息。iOS 6 UI界面方向-shouldAutorotateToInterfaceOrientation:不起作用iOS 6不支持方法shouldAutorotateToInterfaceOrientation:不建议使用。以防万一,如果你是一个新手,谁只是盯着可可工作,并想知道为什么你的视图控制器在iOS 6中搞砸了完善的iOS 5中,只知道shouldAutorotateToInterfaceOrientation:不支持了。即使它在Xcode 4到4.3上都能很好地工作,在Xcode 4.5上也无法工作。苹果提供了一种新的方法来以更清洁的方式完成此任务。您可以改用supportedInterfaceOrientations。它返回视图控制器支持的所有界面方向,以及界面方向值的掩码。UIInterfaceOrientationMask枚举:这些常量是用于指定视图控制器支持的接口方向的掩码位。typedef enum {&nbsp; &nbsp; UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait),&nbsp; &nbsp; UIInterfaceOrientationMaskLandscapeLeft = (1 << UIInterfaceOrientationLandscapeLeft),&nbsp; &nbsp; UIInterfaceOrientationMaskLandscapeRight = (1 << UIInterfaceOrientationLandscapeRight),&nbsp; &nbsp; UIInterfaceOrientationMaskPortraitUpsideDown = (1 << UIInterfaceOrientationPortraitUpsideDown),&nbsp; &nbsp; UIInterfaceOrientationMaskLandscape =&nbsp; &nbsp; &nbsp; &nbsp; (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight),&nbsp; &nbsp; UIInterfaceOrientationMaskAll =&nbsp; &nbsp; &nbsp; &nbsp; (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |&nbsp; &nbsp; UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown),&nbsp; &nbsp; UIInterfaceOrientationMaskAllButUpsideDown =&nbsp; &nbsp; &nbsp; &nbsp; (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |&nbsp; &nbsp; UIInterfaceOrientationMaskLandscapeRight),} UIInterfaceOrientationMask;使用shouldAutorotateToInterfaceOrientation:方法:-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {&nbsp; &nbsp; return UIInterfaceOrientationIsLandscapeRight(toInterfaceOrientation);}使用supportedInterfaceOrientations方法:-(NSUInteger)supportedInterfaceOrientations{&nbsp; &nbsp; return UIInterfaceOrientationMaskLandscapeRight;}这些是UIViewController中有关iOS6中方向的添加方法UIViewController preferredInterfaceOrientationForPresentationUIViewController应该自动旋转UIViewController支持的InterfaceOrientations向UIApplication添加了有关iOS6中方向的方法UIApplication支持的InterfaceOrientationsForWindow:UIInterfaceOrientationMask
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS