对于我的某个应用程序的即将更新,我已将所有图像资源打包到资产目录中。
但是,目前我的大多数图片都没有@ 3x版本。我已经使用模拟器进行了检查,并且在iPhone 6 Plus上使用了@ 2x版本。
我不介意这种行为有两个原因:
虽然图像在iPhone 6 plus的模拟器中正确加载,但我有点担心存档我的应用时会发生什么。特别是,我担心使用App Thinning iPhone 6 Plus用户将获得一个没有任何图像的应用程序:)
所以,我有两个问题:
这些都是微不足道的问题,但我无法在网上找到有关当您不遵守Apple的指导原则而不会在资产目录中提供@ 3x图片但您的应用仍可用于iPhone 6 +。此外,我的一些图像采用JPG格式,这增加了额外的不确定性,因为它不是iPhone的理想格式。
提前感谢您的任何帮助!
答案 0 :(得分:3)
回答你自己的问题。归档应用程序。导出您感兴趣的目标设备的应用程序:
现在查看导出的应用程序并查看它包含的资源。 .ipa
只是另一个名称的.zip
文件;通过更改后缀可以很容易地查看它。现在您知道iPhone 6 Plus用户将从App Store下载哪些资源。
答案 1 :(得分:3)
我使用Matt提出的程序进行了几项额外的测试:
[UIImage imageNamed:]
会为JPG图片返回nil
,除非" .jpg"扩展名作为图像名称[UIImage imageNamed:]
会为JPG图片返回nil
,除非" .jpg"扩展名作为图像名称的一部分提供。[UIImage imageNamed:]
也会正确返回JPG图像延期。当" .jpg"时,图像也会正确加载包括扩展[UIImage imageNamed:]
也会正确返回JPG图像延期。当" .jpg"时,图像也会正确加载包括扩展我使用了Matt建议的image extractor tool从这些资产中提取图像。我只能从档案中导出带有Retina的设备,我可以确认所有图像都具有正确的分辨率(即只有视网膜尺寸,iPad特定图像被忽略)。但是,该工具以PNG格式保存了所有这些文件,因此文件夹的最终大小始终大于Assets.car。
最令人惊讶的是,案例3和4的文件夹大小相同(39.4MB)。此外,图像看起来完全相同。所以,我真的很想知道那里发生了什么,因为这些情况下Assets.car的大小相差2MB。
总之,我们仍然不确定是否可以使用此类测试方法来准确模拟App Thinning行为。所以,如果有人有这方面的个人经验,如果他们可以分享它会很棒。
但是,假设为AdHoc的特定设备导出产生与App Store执行的实际App Thinning相同的结果,我们可以得出结论:
[UIImage imageNamed:]
正确返回JPG图片,但未提供" .jpg"仅在通过资产目录正确处理JPG图像时才进行扩展。如前所述,只有当最低部署目标是iOS 8或更高版本时才会发生这种情况[UIImage imageNamed:]
总是加载正确的图片已指定扩展名。最后两个结论似乎与这个问题无关,但我发现Stack Overflow关于如何使用资产目录正确加载JPG图像的几个相互矛盾的意见。有些人声称你可以加载它们而不提供" .jpg"延伸,而其他人抱怨这种方法不起作用。我认为上面的3和4详细解释了这种情况下发生的情况以及为什么人们会得到不同的结果。
答案 2 :(得分:0)