为啥默认 xcassets LaunchImage 不支持开箱即用的 iPhone5?
Posted
技术标签:
【中文标题】为啥默认 xcassets LaunchImage 不支持开箱即用的 iPhone5?【英文标题】:Why doesn't default xcassets LaunchImage support iPhone5 out of the box?为什么默认 xcassets LaunchImage 不支持开箱即用的 iPhone5? 【发布时间】:2016-03-02 16:23:48 【问题描述】:我正在尝试在打算为 ios 设备部署的 react-native 应用上设置启动画面。
众所周知,有几种不同的屏幕可供定位(因像素密度、纵横比和其他因素而异),所以我必须提供一些图片。似乎至少有三种方法可以提供允许 iOS 决定在任何情况下使用哪个图像的映射; 我的理解是,这些方法中的任何一个 本身就足够了:
-
将所有图像文件放在 Xcode 项目的根目录下,根据特定约定命名它们(
Default.png
、Default@2x~ipad.png
、Default-568h@2x.png
等)
在项目的 Info.plist 中定义一个 UILaunchImages
字典项,为每个场景提供一个字典条目,指向所需的图像
在资产目录中创建“LaunchImage”类型的项,将图像拖放到每个场景的占位符上,然后指向项目目标的“应用程序图标和启动图像”配置中的 LaunchImage 项
我强烈倾向于使用第三种方法,这在很大程度上是因为在定义每个显示场景的识别特征方面,它需要的技术精度最低。但是当我在我的 iPhone5 上测试时它不起作用——启动画面是黑色的,而不是显示我的彩色图像。我在 LaunchImage 板上的每个位置都放置了一个图像,这表明 Xcode6 附带的 LaunchImage 骨架根本没有对应于 iPhone5 的位置。这不可能。 (是的,我的图片是 PNG。)
很多教程告诉我在资产目录中创建一个新的图像集(它有不同的骨架),但是“应用程序图标和启动图像”配置只允许我选择是 LaunchImages 的项目。
网上有很多资源记录了前两种方法——即依赖文件系统约定,或在 Info.plist 中定义映射——但似乎没有任何东西真正解决资产目录方法。
有人能指出正确的方向吗?
编辑:有趣的是,当我将 @1x 图像放在 LaunchImage 板上的每个位置时,项目无法构建,因为“没有适用的内容”。当我将 @2x 图像放在所有 Retina 点时,应用程序会构建,但初始屏幕是黑色的。
这是否揭示了什么?
【问题讨论】:
建议 - 不要使用启动图像。使用单个启动屏幕文件(故事板)。然后它将适用于包括 iPad Pro 在内的任何设备,并支持在受支持的 iPad 上进行多任务处理。 【参考方案1】:经过一番试验,事实证明手机会默默地拒绝分配给该场景的图像,因为图像尺寸不正确。我提供的图像比适当的要大一点,显然 iOS 处理这个问题的方式是显示黑色的启动屏幕而不发出任何有用的诊断信息。
我从this SO post 得到了确切的尺寸。
【讨论】:
以上是关于为啥默认 xcassets LaunchImage 不支持开箱即用的 iPhone5?的主要内容,如果未能解决你的问题,请参考以下文章
找不到文件:mtbs/builds/z.iOS/yyy/Resources/Images.xcassets/LaunchImages.launchimage/Contents.json