ios - 如何使用 UILaunchImages Key

标签 ios arrays xcode

我编辑了 info.plist 并添加了 UILaunchImages 键。但是,我无法让应用程序显示我想要的启动图像。我这样做是为了尝试为 iPhone 创建横向启动图像。这是代码。

   <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>

我想用我自己的图像替换默认值,但是当我这样做时它只显示黑屏。我错过了一步吗?这是 iOS 8 的问题吗?

最佳答案

Apple 技术说明 TN2244 (https://developer.apple.com/library/ios/technotes/tn2244/_index.html) 提供了一些有关如何为仅以横向模式启动的 iPhone 应用程序添加 UILaunchImages 的基本信息,特别是如果您希望支持 iOS8 和 iOS7。 (具体来说,它给出了上面显示的 XML 代码,一旦粘贴到 Info.plist 文件中,就可以在 XCode 的项目设置 - 信息选项卡中进行编辑)。关联的图像应该被拖到 Xcode 的项目资源管理器中。

该技术说明还指出,为了同时支持 iOS8 和之前的版本,不得使用 Assets 目录。

所以这是一个很好的起点,但对我来说它需要进一步充实。 对于我的应用程序,我希望能够从 iPhone4s/iOS7 开始运行到 iPhone6Plus/iOS8.x,仅横向运行,我遇到了各种问题。最大的问题是,虽然我已经创建了各种启动图像(在横向模式下,然后将它们旋转为纵向),将它们添加到我的项目中,并将名称完全按照技术说明中的方式放入 UILaunchImages 字典中,但启动图像会显示对于 iPhone4s/iOS7 正确,但在 iPhone5* 和 iPhone6 上,无论 LaunchImages 中有什么,都会拾取 iPhone4 图像,它会在显示之前进一步旋转。

更糟糕的是,iPhone5 和 iPhone6 将只能在信箱模式下运行,并报告 320x480 点的屏幕尺寸。在 iOS8 下运行任何东西,我会从 LaunchScreen.xib 文件中获取默认屏幕。我也不想要那个,因为我现在不能使用自动布局。

我找到的解决方案是由 Alex Argo 发布的,请参阅问题 (How do I create launch images for iPhone 6 / 6 Plus Landscape Only Apps?)。这涉及向 Info.plist 添加更多键,即使未使用,也适用于肖像图像。请注意下方的其他肖像条目,这些条目未包含在技术说明中。

<key>UILaunchImages</key>
<array>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>7.0</string>
        <key>UILaunchImageName</key>
        <string>Img320x568ptsPort@2x</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{320, 568}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>7.0</string>
        <key>UILaunchImageName</key>
        <string>Img320x568ptsLdsc@2x</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{320, 568}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>7.0</string>
        <key>UILaunchImageName</key>
        <string>Img320x480ptsPort@2x</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{320, 480}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>7.0</string>
        <key>UILaunchImageName</key>
        <string>Img320x480ptsLdsc@2x</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>Img375x667ptsPort@2x</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>Img375x667ptsLdsc@2x</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>Img414x736ptsLdsc@3x</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>Img414x736ptsPort@3x</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{414, 736}</string>
    </dict>
</array>

有趣的是,对于 iPhone 6Plus,我发现无需将横向启动图像旋转为纵向,而所有其他横向启动图像都需要旋转。

它还涉及在项目设置中清除“启动屏幕文件”。否则,默认的 LaunchScreen.xib 有时会被用作启动屏幕案例(这对我来说不好,因为此时我的应用程序中图形和文本之间的相互作用有点排除了自动布局)。

所有这些都适用于 Xcode 6.4。

关于ios - 如何使用 UILaunchImages Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26441782/

相关文章:

ios - MagicalRecord 示例应用程序无法在 Xcode 7 中编译

c++ - 从函数返回数组

c - C 中的数组很麻烦

iOS。如果来自不同的目标,则获取 bundle

ios - UITextView 由于行数和字符数限制文本

另一个文件中的 iOS UITextView 委托(delegate)

ios - 自 Xcode 8 以来 UI 测试速度变慢

c++ - cmd 窗口停止工作,文本文件被 fstream 读取错误

iphone - 通过 iPhone 应用程序以字符串形式读取 PDF 文件

ios - “could not inspect application package” X代码