【问题标题】:different UIViewController Orientations depending on which view the user is in不同的 UIViewController 方向取决于用户在哪个视图中
【发布时间】:2013-03-13 02:04:52
【问题描述】:

我想为我的应用程序中的不同视图控制器设置不同的规则,而不是所有视图的单一规则(就像您可以在 Target-Summary 中定义的那样)。

例如,我有几个视图我希望我的前几个视图只显示在纵向视图中,但是在我的最后一个视图中,我希望用户能够在纵向和横向之间切换......可以这样做。

我还阅读了以下问题:用户在横向状态下导航到视图,并且视图在应该是纵向时显示为横向并且在用户旋转设备之前不会改变,如果可能的话,我想避免这种情况......

所以我的问题是如何根据用户所在的视图允许不同的 UIViewController 方向。

【问题讨论】:

    标签: ios uiviewcontroller


    【解决方案1】:

    这取决于您的目标是 iOS 5 还是 iOS 6。
    iOS 5:

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
       if ((orientation == UIInterfaceOrientationPortrait) ||
           (orientation == UIInterfaceOrientationLandscapeLeft))
           return YES;
    
           return NO;
    }
    

    iOS 6:

    在 App Summary 中设置默认支持的方向,然后在 VC 中设置不同的方向:

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

    HERE 的 Apple 文档

    查看这些问题了解更多信息:

    shouldAutorotateToInterfaceOrientation not being called in iOS 6

    shouldAutorotateToInterfaceOrientation is not working in iOS 6

    【讨论】:

    • 很酷,谢谢 :) 我尝试了您提供的 ios6 代码,发现在视图加载后我仍然可以旋转.. 这是代码的正确行为吗?还是我需要实现 ios 5 代码,因为这似乎可以工作.. 不是我已经尝试过了。
    • 这取决于你是在 iOS 5 还是 iOS 6 上运行这个应用程序。它们处理方向的方式不同
    • 是的,我在 iOS6 中运行。这两个语句都不适合我。它仍然允许我旋转视图,例如,如果我只将 Portrait 定义为受支持的界面...如果我在我的设置中没有正确定义某些东西,我会受伤吗? (我现在正在阅读您的其他链接)
    • 我只是无法让它工作,我会在晚上继续阅读它......然后在早上再尝试一些东西。
    猜你喜欢
    • 1970-01-01
    • 2013-01-20
    • 2011-04-03
    • 2011-11-03
    • 2011-06-21
    • 1970-01-01
    • 2016-08-31
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多