【问题标题】:How comes this UIViewController is always displayed in Portrait Mode?这个 UIViewController 怎么总是以纵向模式显示?
【发布时间】:2012-10-02 08:08:48
【问题描述】:

当我的设备处于横向模式并且我以模态方式呈现视图控制器时,它始终以纵向模式显示,这正是我想要的。

但是,我不明白为什么其他视图(模态显示)总是以横向模式显示(如果设备的当前方向是横向)。我使用的代码对于我的所有视图控制器都是相同的,并且 xib 文件方向属性始终是纵向的。

这就是我推动工作的视图控制器的方式(它永远不会以横向模式显示):

 - (IBAction)showImport:(id)sender
    {
        CMImportExportViewControlleriPhone *importController = [[CMImportExportViewControlleriPhone alloc] initWithNibName:@"Import-Export-iPhone" bundle:nil];
        [importController setLayoutViewController:self];
        //[importController setDelegate:self];
        [self presentModalViewController:importController animated:YES];
        [importController release];
    }

谢谢

【问题讨论】:

    标签: objective-c ios


    【解决方案1】:

    如果这是初始视图控制器,并且您在 plist 文件中有设置以纵向模式启动应用程序,那么它将以纵向模式显示,这与您的设备方向无关。当您将设备置于横向模式并呈现新的视图控制器时,它将是横向的,因为它遵循状态栏的方向!在呈现新的视图控制器之前,尝试将状态栏重置为纵向模式,然后呈现新的视图控制器。它将以纵向模式呈现!我在 iOS 6.0 中遇到过类似的问题。

    【讨论】:

    • 它不是初始控制器,我在上面的代码中设置了状态栏方向,但它仍然是纵向的。我之前尝试设置状态栏方向以显示其他视图控制器,但它们仍然以横向模式显示。
    • 这很奇怪!您使用的是 iOS 6.0 吗?如果您只想要纵向模式,那么您可以锁定整个应用以仅使用纵向模式!
    • 是的,iOS 6.0。不,这里的挑战是在设备(和当前视图)处于横向模式时以纵向模式呈现模态屏幕。
    • 等等...在 iOS 6.0 中,您的应用程序委托扩展了 UIResponder 而不是 UIApplication。我相信你会使用 [[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationPortrait animated:NO];设置状态栏方向,但这不再起作用。你的状态栏真的在旋转吗?
    • 我解决了这个问题。您必须在每个视图控制器的实现中包含stackoverflow.com/questions/12691120/… 中给出的方法。我希望你正在使用故事板。如果您不使用情节提要,则只需创建基类并将这些方法放在基类中,并从您希望保持纵向模式的每个控制器继承基类。其余部分仍在横向旋转,但即使您旋转设备,这些视图控制器也会始终保持纵向!有趣的修复:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多