关闭 ViewController 后,我的视图保持在 iOS7 中以前的视图控制器方向

Posted

技术标签:

【中文标题】关闭 ViewController 后,我的视图保持在 iOS7 中以前的视图控制器方向【英文标题】:After dismissViewController my view remain in previous view controller's orientation in iOS7 【发布时间】:2014-08-16 23:19:13 【问题描述】:

由于我正在使用 ios 应用程序,因此仅支持 Portrait Orientation。 但我遇到了一些与方向相关的问题。

我的应用只支持纵向

当我的父母 P1.view 使用导航推送时,它处于纵向模式,这很好。现在从 P1.view 我正在查看我的子视图 C1.view

现在我在 childview C1.view 并从那里使用委托我正在调用

-(void)imagePickerController:(UIImagePickerController *)picker

[self.delegate openCamera];//从C1.view调用

-(void)openCamera   //declared in P1.view
    
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsEditing = NO;
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;>             
        [self presentModalViewController:picker animated:YES];
    

现在,当我在 Lanscape 模式下拍摄照片并将其关闭时 presentModalViewController 我的视图出现在 Landscapmode 而不是 Portrait 模式。

    - (BOOL)shouldAutorotate 
        return YES;
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
     return (interfaceOrientation == UIInterfaceOrientationPortrait ||
            interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
    

    - (NSUInteger)supportedInterfaceOrientations     
        return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
        return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
    

此方法在视图控制器(P1 和 C1)中都定义,并且在模型视图关闭时也被调用,但我的视图控制器仍保留在景观中,这不应该发生。

此代码在 iOS6 中运行良好,但在 iOS7 中运行良好

【问题讨论】:

对于 iOS 7,你应该使用 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 但这在 iOS 6 中不起作用。 【参考方案1】:

我认为preferredInterfaceOrientationForPresentation 不应该返回位掩码。你可以试试:

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation return UIInterfaceOrientationPortrait;

【讨论】:

以上是关于关闭 ViewController 后,我的视图保持在 iOS7 中以前的视图控制器方向的主要内容,如果未能解决你的问题,请参考以下文章

关闭模式视图后标签栏文本太大

Storyboard Modal ViewController 不会关闭;已经尝试了一切

关闭呈现模式 ViewController

PresentViewController 关闭不会回到以前的 viewController

如何关闭当前的 ViewController 并在 Swift 中转到另一个视图

关闭 Modal ViewController 将父视图隐藏在状态栏后面