【问题标题】:How to rotate iOS app only on iPhone 6+如何仅在 iPhone 6+ 上旋转 iOS 应用程序
【发布时间】:2014-12-07 08:09:28
【问题描述】:

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

我能想到的方法有两种

a) 更好的解决方案(恕我直言) - 仅对某些设备启用旋转。是否可以在项目设置中不编辑代码的情况下完成?

b) 在 iPhone6+ 上使用 iPad 版本的故事板,而不是经典的 iPhone 版本的 storybaod。可以从 XCode 故事板或项目设置中完成,还是我必须在我的代码中这样做?我没有找到其他解决方案,即根据设备标识在代码中加载某些情节提要。

【问题讨论】:

  • 在 iPad 故事板中你如何处理纵向/横向?
  • @sha 我在 XCode 的应用程序设置中检查它以启用纵向/横向。但这只能用于 iPhone / iPad,不存在设备类型说明符。否则,在情节提要中我使用约束和自动布局

标签: iphone xcode storyboard ios8 autolayout


【解决方案1】:

这是实现此目的的简单方法。只需将以下内容添加到您的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;
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我害怕那个。我的应用程序较旧,所以我有单独的 iPhone 和 iPad 故事板,它们是不同的(元素位置、效果等)
    • 如果您打算继续支持您的应用程序,我建议您现在处理情节提要。在这个组合的故事板中,您可以非常容易地根据设备类控制元素的位置/大小。
    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 2012-12-27
    • 2015-06-24
    • 1970-01-01
    • 2014-09-27
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多