如何从具有横向方向的视图控制器以模式方式显示具有纵向方向的新视图控制器?

时间:2014-07-08 17:07:10

标签: ios cocoa ios7

我有以横向模式显示的视图。我想以模式方式显示一个具有纵向方向的新视图控制器(因此它看起来像是从右侧滑入)。目前,当我执行下面的代码时,它以与调用视图控制器相同的横向方向模态显示新的视图控制器。如何从具有横向方向的视图控制器以模式方式显示具有纵向方向的新视图控制器?

这是我现有的代码......

//This code is called from the landscape view controller

- (void)showPortraitViewControllerButtonTapped

{

  MyViewController *vc = [MyViewController new];

  UINaviationViewController *navVC = [[UINavigationViewController alloc] initWithRootViewController:vc];

  [self presentViewController:navVC animated:YES completion:nil];
}

//Code inside the view controller that I want to modally display in portrait orientation

@implementation MyViewController

(NSUInteger)supportedInterfaceOrientations 
{

   return UIInterfaceOrientationMaskPortrait;

}

@end

感谢您的智慧!

1 个答案:

答案 0 :(得分:0)

不是强迫控制器上的方向,因为你感兴趣的只是过渡,你应该控制过渡本身:

[self.navigationController.view.layer addAnimation:({
    CATransition *transition = [CATransition animation];
    transition.type = kCATransitionMoveIn;
    transition.subtype = kCATransitionFromTop;

    transition;
}) forKey:@"SlideFromRightInLandscapeLeft"];
[self.navigationController pushViewController:navVC animated:NO];

请注意,这不是-presentViewController,而是使用-pushViewController。 像这样关闭你的navVC:

[self.navigationController popViewControllerAnimated:YES];