使用IOS 6中的故事板以横向模式呈现modalViewController

时间:2012-10-15 21:13:42

标签: ios6 modalviewcontroller landscape

我有一个应用程序,在纵向模式下有一些视图,我想在横向模式下呈现模态视图控制器...对于IOS 5.0和5.1工作完美,在IOS 6中它打开modalView但在纵向模式。您需要知道:我使用故事板并将VC设置为Landscape ... 在app delegate中我添加了:

-(NSUInteger)application:(UIApplication *)application    supportedInterfaceOrientationsForWindow:(UIWindow *)w
{return UIInterfaceOrientationMaskPortrait;}

如果我添加| UIInterfaceOrientationMaskLandscape,我可以在其他视图中轮换该应用。

然后,对于摘要,我禁用了所有支持的界面方向.. 在这里,我尝试设置纵向和横向,并且运行良好,但在这种情况下,我可以旋转到左侧和后面的所有视图。

在ViewCOntroller之后,我想在风景中午餐,我有这个方法用于IOS 6:

-(NSUInteger)supportedInterfaceOrientations
{return UIInterfaceOrientationLandscapeLeft;}

-(BOOL)shouldAutorotate
{return YES;}

当我点击按钮午餐modalView运行后,我收到此错误:“支持的方向与应用程序没有共同的方向,并且应该返回YES”

我知道关于在该方法上返回YES但是如果我设置为NO,则没有任何反应。 我想考虑一下:我的应用程序需要在IOS 5及更高版本上工作。

有人可以帮我吗? 任何建议都是值得赞赏的;)

非常感谢

1 个答案:

答案 0 :(得分:3)

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self transformView2ToLandscape];}

-(void) transformView2ToLandscape {

NSInteger rotationDirection;
UIDeviceOrientation currentOrientation = [[UIDevice currentDevice] orientation];

if(currentOrientation == UIDeviceOrientationLandscapeLeft){
    rotationDirection = 1;
}else {
    rotationDirection = -1;
}

CGAffineTransform transform = [arController.viewController.view transform];
transform = CGAffineTransformRotate(transform, degreesToRadians(rotationDirection * 90));
[arController.viewController.view setTransform: transform];}

这对我来说很好。