如何仅在iPhone 6+上旋转iOS应用程序

时间:2014-10-12 18:30:03

标签: iphone xcode storyboard ios8 autolayout

我的应用程序在portratit模式下在iPhone上。我也有iPad版,可以旋转。现在,有了新的iPhone 6+,我想转动我的应用程序。我发现了有关此问题的任何问题/解决方案。

我能想到两种方式

a)更好的解决方案(imho) - 仅对某些设备启用旋转。可以在没有在项目设置中的某处编辑代码的情况下完成吗?

b)在iPhone6 +上使用iPad版故事板而不是经典的iPhone版故事板。可以在XCode故事板或项目设置中完成,还是我必须在我的代码中执行此操作?我没有找到其他解决方案,即根据设备识别在代码中加载某些故事板。

2 个答案:

答案 0 :(得分:3)

这是实现这一目标的简单方法。只需将以下内容添加到UIApplicationDelegate

即可
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    static UIInterfaceOrientationMask rv = 0;
    if( rv == 0 ) {
        if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone ) {
            CGSize s = window.bounds.size;
            if( MAX( s.width, s.height ) >= 700.0f ) {
                rv = UIInterfaceOrientationMaskAllButUpsideDown;
            } else {
                rv = UIInterfaceOrientationMaskPortrait;
            }
        } else {
            rv = UIInterfaceOrientationMaskAll;
        }
    }
    return rv;
}

答案 1 :(得分:1)

Apple推荐的方法是将iPhone和iPad故事板合二为一,并在故事板中使用大小类来根据设备/方向更改约束。

至于在特定设备中启用旋转 - 您可以再次检查视图控制器内的大小类或检查特定设备的分辨率。我不认为有可能在项目设置中为设备类(iPhone 6与iPhone 6+)启用/禁用它。