当iphone转向风景时,在风景中呈现模态视图控制器

时间:2014-05-23 16:36:56

标签: ios iphone objective-c uiviewcontroller uiinterfaceorientation

我有一个iPhone应用程序,它始终以纵向工作。

此应用有一个导航视图控制器和rootViewcontroller,它也以纵向显示。我希望当iPhone转为横向时显示viewController,并在应用转回肖像时关闭此视图控制器。

目前我已经实现了这一点,但我的观点完全被移动了:

步骤1: Step1

步骤2:

Step2

第三步: Step3

我尝试了几件事,但我不知道我是否选择了正确的方法:

-(BOOL)shouldAutorotate
{
     return YES;
}

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation     duration:(NSTimeInterval)duration
{


 }

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    if ([[UIApplication sharedApplication] statusBarOrientation] ==    UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication]  statusBarOrientation] == UIInterfaceOrientationLandscapeRight) {
        UIStoryboard *currentStoryboar = [self storyboard];
        ASTBigProgressViewController *bigProgress = [currentStoryboar instantiateViewControllerWithIdentifier:@"ASTBigProgressViewController"];
        [self presentViewController:bigProgress animated:YES completion:^{

        }];
    }
}
-(NSUInteger)supportedInterfaceOrientations
{ 
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |
            UIInterfaceOrientationMaskLandscapeRight |     UIInterfaceOrientationMaskPortraitUpsideDown);
}

我希望在转动视图控制器时,它不会将视图保持在同一位置。我试过了:

-(BOOL)shouldAutorotate
{
     return NO;
} 

但显然没有调用didRotateFromInterfaceOrientation方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

Creating an Alternate Landscape Interface上的Apple文档可能正是您所需要的。

答案 1 :(得分:0)

在旋转过程中不要呈现或关闭视图控制器,这是在viewWillRotateRotat和viewDidRotate ......以及shouldViewRotate等中。

您可以使用performSelector:withDelay。即使是0.0或0.01的短暂延迟也应该可以解决问题。