如何为iPhone 6/6 Plus仅景观应用创建启动图像?

时间:2014-09-19 04:58:43

标签: ios iphone ios8 iphone-6

我有一个现有的横向应用程序,我正在尝试添加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风景。

11 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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~ipo.png可以防止6加号选择那些,因为它们会覆盖3x图像。

答案 2 :(得分:14)

以下步骤对我有用:

  1. 使用以下提名将图像添加到项目(根目录或资源文件夹)(我将其描述为Portrait launchimages):Default.png(3.5英寸),Default-568h @ 2x.png(4英寸) ,Default-667h @ 2x.png(iPhone 6),Default-736 @ 3x.png(iPhone 6plus)。
  2. 转到常规标签上的目标设置,应用图标和启动图片 - &gt;将“启动图像源”设置为不使用资产目录(“不使用资产目录”)。
  3. 从主图像资源中删除LaunchImage资产
  4. 转到常规标签上的目标设置,应用图标和启动图片 - &gt;将启动图像源设置为使用资产目录
  5. XCode 6将向您询问有关现有图像的图像资产迁移的信息。只需点击“迁移”。
  6. 它适用于iOS7,iOS8上的各种设备。 注意: 如果您检查新的LaunchImage资产,那么您可以看到它真的很奇怪。它似乎只包含一些没有iPhone6或iPhone 6plus分辨率图像的图像。

答案 3 :(得分:11)

适用于iPhone 6:

750 x 1334(@ 2x)为肖像
1334 x 750(@ 2x)景观

适用于iPhone 6 Plus:

1242 x 2208(@ 3x)为肖像
2208 x 1242(@ 3x)for landscape

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

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

答案 4 :(得分:11)

如果您仅使用Images.xassets&#34;启动屏幕文件&#34;应该是空的。 它帮助了我。

"Launch screen file" is empty

答案 5 :(得分:4)

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

如果没有这些添加,我们看到的行为是在iOS 9 iPhone上启动我们的仅景观应用程序显示与iOS 8相同的图像,但是图像顺时针旋转90度并且被拉伸到相反的方向而扭曲 - 方向的维度。

预修iOS 9 iPhone发布屏幕: Pre-Fix iOS 9 iPhone Launch Screen

此解决方案有两个部分:

  1. 将以下iOS 9项目添加到您的Info.plist UILaunchImages阵列之前来自@ AlexArgo的答案中的iOS 8项目。
  2. 将以下iOS 9项目中引用的新发布图片(例如Default-iOS9-568h)添加到您的应用中。新的发布图像是实际&#34;横向&#34; - 方向图像(比它们更高),与@ 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>
    
  3. 修复后iOS 9 iPhone发布屏幕: enter image description here

答案 6 :(得分: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>

答案 7 :(得分:1)

对于除plus以外的所有iPhone,没有针对仅横向应用的单独启动屏幕。您可以像Deepak描述的那样在plist中设置方向,然后将 portrait 启动屏幕设置为横向启动屏幕的旋转版本。

这就是它一直如此,唯一改变的是现在加上一个独立的,独特的景观启动画面。所有其他设备仍然只支持纵向启动屏幕,无论您的应用程序的起始方向如何。

答案 8 :(得分:1)

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

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

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

这对我来说似乎有效。这是丑陋的IMO,但它确实有效。

希望这可以帮助一些人。

答案 9 :(得分:0)

你只需添加iPhone6-Portrait@2x.png,然后它也将自己修复为Landscape。我还推出了适用于iPhone 6和iPhone 6 Plus的仅限风景的应用程序,它可以毫无问题地运行!

答案 10 :(得分:-4)

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

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

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

了解更多信息click here