60

我有一个现有的仅限风景的应用程序,我正在尝试添加对 iPhone 6 / iPhone 6 Plus 的支持。当我支持 iOS 6 / 7 时,我只是使用了默认命名的启动纵向图像,并将横向图像旋转为纵向(即,对于 4" 屏幕,我创建了一个 1136x640 的横向,然后旋转以创建一个 640×1136 的启动图像。)

我正在尝试让一些适用于 iOS 8 和 iPhone 6 / 6+ 的东西,但还没有想出一些适用的东西。以下是我尝试过的一些事情:

  1. 遵循 4" 屏幕启动图像约定的模式。我创建了 Default-667h@2x.png 和 Default-736h@3x.png 图像。这确实欺骗了模拟器以正确的 iPhone 6/6+ 分辨率运行,但是在启动时,使用 4" 屏幕启动图像,而不是我创建的新图像。
  2. 使用资产目录 - 我在 LaunchImages 资产中为 iPhone 6 和 iPhone 6 Plus 创建纵向启动图像,并为 iPhone 6 Plus 创建横向启动图像。iPhone 6 Plus 可以工作,但 iPhone 6 只是显示黑屏。(无法在资产目录中创建 iPhone 6 横向启动图像)
  3. 在 Info.plist 中指定 UILaunchImages 数组,其中包含所有屏幕尺寸的条目(请参阅参考https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/ uid/TP40009252-SW28)。我在这里得到了与资产目录类似的结果。我可以让 iPhone 6 Plus 横向工作,但不能让 iPhone 6 横向工作。
4

11 回答 11

75

我找到了一种解决方法,使横向仅启动图像在 iOS 8 GM 上工作。我最终在 Info.plist 中使用了 UILaunchImages 数组。诀窍是让图像显示不明确支持横向(iPhone 4/4S、iPhone 5/5S/5C、iPhone 6),您需要指定重复条目。请参阅下面的示例。这适用于支持 iPad 两种方向的纯横向手机应用程序。iOS 7 将回退到默认图像名称。

所有 iPhone 启动图像都需要像往常一样旋转为纵向,iPhone 6 Plus 启动图像除外。它本身支持横向启动图像,因此您需要将其启动图像保留为横向。

以下是您的 Info.plist 的相关位:

<key>UILaunchImages</key>
<array>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{320, 480}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{320, 480}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-568h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{320, 568}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-568h</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{320, 568}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-667h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{375, 667}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-667h</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{375, 667}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-736h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{414, 736}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-736h</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{414, 736}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-Portrait</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{768, 1024}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-Landscape</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{768, 1024}</string>
    </dict>
</array>
于 2014-09-21T14:25:49.667 回答
61

iPhone 6等的模式已经改变

iPhone 6 ( 750x1334 ):

Default-375w-667h@2x~iphone.png

iPhone 6 Plus:(1242x2208

Default-414w-736h@3x~iphone.png

Default-Landscape@3x.png(用于横向)

请注意,如果您支持 iPad,那么您必须重命名您的 iPad 默认图像以附加 ~ipad,例如 Default-Portrait~ipad.png 以防止 6 plus 拾取这些图像,因为这些图像覆盖了 3x 图像。

于 2014-12-14T20:43:52.553 回答
14

以下步骤对我有用:

  1. 将图像添加到项目(根目录或资源文件夹)中,指定以下名称(我将在 Portrait launchimages 中描述它们):Default.png(3.5 英寸),Default-568h@2x.png(4 英寸),Default- 667h@2x.png (iPhone 6), 默认-736@3x.png (iPhone 6plus)。
  2. 转到“常规”选项卡上的目标设置、应用程序图标和启动图像 -> 将启动图像源设置为不使用资产目录(“不使用资产目录”)。
  3. 从主图像资产中移除 LaunchImage 资产
  4. 转到常规选项卡上的目标设置、应用程序图标和启动图像-> 设置启动图像源以使用资产目录
  5. XCode 6 将询问您有关从现有图像迁移图像资产的问题。只需单击“迁移”。

它适用于 iOS7、iOS8 上的各种设备。注意:如果您检查新的 LaunchImage 资产,那么您会发现它真的很奇怪。它似乎只包含一些图像,没有 iPhone6 或 iPhone 6plus 分辨率的图像。

于 2014-11-03T23:33:01.280 回答
11

对于 iPhone 6:

纵向 750 x 1334 (@2x
) 横向 1334 x 750 (@2x)

对于 iPhone 6 Plus:

1242 x 2208 (@3x) 纵向
2208 x 1242 (@3x) 横向

或者你可以通过这个链接它可以帮助你

http://matthewpalmer.net/blog/2014/09/10/iphone-6-plus-launch-image-adaptive-mode/

于 2014-09-19T05:12:10.130 回答
11

如果您仅使用 Images.xassets “启动屏幕文件”应该为空。它帮助了我。

于 2014-12-04T13:53:14.387 回答
4

这是@AlexArgo 的回答的后续行动,它扩展了它,以便仅横向、支持 iOS 9 的应用程序在 iOS 9 iPhone 上显示适当的启动图像。与该答案一样,不需要资产目录、故事板或 xib。

如果没有这些添加,我们看到的行为是在 iOS 9 iPhone 上启动我们的仅横向应用程序会显示与 iOS 8 相同的图像,但图像顺时针旋转 90 度并通过拉伸到相反方向的尺寸而扭曲.

修复 iOS 9 iPhone 启动屏幕: 预修复 iOS 9 iPhone 启动屏幕

此解决方案有 2 个部分:

  1. 在@AlexArgo 的答案中的 iOS 8 项目之前,将以下 iOS 9 项目添加到您Info.plistUILaunchImages数组中。
  2. 将以下 iOS 9 项目(例如Default-iOS9-568h)中引用的新启动图像添加到您的应用程序。新的启动图像是实际的“横向”方向图像(比它们高),与@AlexArgo 的 iOS 8 项目引用的图像不同,这些图像最初是横向图像,但在添加到应用程序之前会旋转到纵向。请注意,这两组图像必须保留在应用程序中,此解决方案才能同时在 iOS 8 和 9 上运行。

    <key>UILaunchImages</key>
    <array>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>9.0</string>
            <key>UILaunchImageName</key>
            <string>Default-iOS9</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{320, 480}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>9.0</string>
            <key>UILaunchImageName</key>
            <string>Default-iOS9-568h</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{320, 568}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>9.0</string>
            <key>UILaunchImageName</key>
            <string>Default-iOS9-667h</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{375, 667}</string>
        </dict>
        ...(pre-iOS 9 items)...
    </array>
    

修复后的 iOS 9 iPhone 启动屏幕: 在此处输入图像描述

于 2015-10-14T20:34:33.617 回答
2

要使用 ipad(横向和纵向模式),您需要在 info.plist 中添加UILaunchImages~ipad键:

<key>UILaunchImages~ipad</key>
    <array>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Landscape</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{768, 1024}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Portrait</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{768, 1024}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Landscape</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{748, 1024}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Portrait</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{768, 1004}</string>
        </dict>
    </array>
于 2014-11-18T13:40:00.417 回答
1

我所做的是将我的项目更改为不使用资产目录来启动图像,并使用 iOS7 及更早版本的旧技术。这使得启动图像适用于 iOS7 及更早版本。

为了让它们也适用于 iOS8,以便您可以获得正确的分辨率,并让您的应用程序被识别为是为新的 iPhone 6/+ 构建的,您还需要创建一个新的 LaunchImage XIB 并告诉 Xcode 使用它。

似乎发生的情况是,在 iOS8 设备上启动应用程序使用了新的 XIB 技术,而在 iOS7 或更早版本的设备上启动应用程序则使用了您已经熟悉和喜爱的图像。

这对我来说似乎有效。这是丑陋的国际海事组织,但它的工作原理。

希望这可以帮助一些人。

于 2014-09-23T01:12:22.617 回答
1

对于除 plus 之外的所有 iPhone,只有横向应用程序没有单独的启动屏幕。您按照 Deepak 的描述在 plist 中设置方向,然后将纵向启动屏幕设置为横向启动屏幕的旋转版本。

一直以来都是这样,唯一改变的是 plus 现在支持单独的、独特的横向启动屏幕。无论您的应用程序的启动方向如何,所有其他设备仍仅支持纵向启动屏幕。

于 2014-09-21T21:37:21.050 回答
0

您只需添加 iPhone6-Portrait@2x.png,然后它也会自行修复为横向。我还有一个适用于 iPhone 6 和 iPhone 6 Plus 的横向应用程序,它可以毫无问题地运行!

于 2014-11-14T12:29:35.633 回答
-4

要以横向模式启动应用程序,请编辑 Info.plist 文件以添加具有适当值(UIInterfaceOrientationLandscapeRight 或 UIInterfaceOrientationLandscapeLeft)的 UIInterfaceOrientation 键,如下面的代码。这会提示系统在启动时适当地设置状态栏的方向。

清单 1:以横向模式启动应用程序

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string> 

更多信息请点击这里

于 2014-09-19T05:09:52.010 回答