2

我们有一个应用程序,它使用了 iphone 5 的全分辨率并且到目前为止运行良好。现在我们收到了一位测试人员的投诉,称它在 ipod Touch 5g 上不起作用。

令人惊讶的是,日志显示 [UIScreen mainScreen].bounds 在 ipod Touch 上返回 (320.0, 480.0) 而在 iphone 5 上显示正确的边界 (320.0, 568.0) ?!

在此之后,我进行了调查,似乎 iOS 会查找是否存在带有“-568h”后缀的图像并决定以信箱模式 (320,480) 或全分辨率 (320,568) 运行。

现在我有一个令人讨厌的怀疑:我们的高分辨率初始屏幕图像的名称是 Default~iphone-568h@2x.png 对应于 Apple 应该可以工作(我们有一个在 ipad 和 iphone 上运行的通用应用程序)。

由于我这里还没有 ipod touch,有人可以证实这个怀疑:

  • Default~iphone-568h@2x.png 适用于 iphone 5,但不适用于 ipod touch 5g

  • Default-568h@2x.png 适用于两种设备。

编辑:8-0 我不相信这一点。我现在有一个可用的 ipod Touch 和一个 iphone 5。如前所述,我正在使用 ~iphone 修饰符来区分其他图像以区分 ipad 和 iphone。

将 Default~iphone-568h@2x.png 重命名为 Default-568h@2x.png 现在适用于 ipod touch 5,但不再适用于 iphone 5。完全颠倒!!

复制:

  • 使用适用于所有设备的通用应用程序(iphone/ipad 视网膜/非视网膜/4")

  • 为 iphone/ipod 命名“~iphone”标识符,为 ipad 命名

  • 使用 Default~iphone-568h@2x.png 或 Default-568h@2x.png 并查看它是否在 iphone 5 和 iphone touch 5 上以正确的全分辨率运行

可以请人确认一下吗?Xcode 4.5.2 / iOS SDK 6.0

编辑 2: rckoenes 回答成功了,但我仍然对 iphone 的设备标识符无法正常工作感到失望。

4

2 回答 2

3

Default~iphone-568h@2x.png应该是不正确 的Default-568h@2x.png。不要~iphone在启动图像上使用修饰符,~iphoneor~ipad修饰符仅在您需要在不同设备上加载视图的特定图像时才有用。因此,启动图像不需要它。

您可以在iOS App Programming Guide部分中找到有关App Launch (Default) Images的内容。

我的通用应用程序具有以下图像:

  • 默认.png
  • 默认@2x.png
  • 默认-568h@2x.png
  • Default-Portrait~ipad.png
  • Default-Portrait@2x~ipad.png
  • 默认-横向~ipad.png
  • Default-Landscape@2x~ipad.png
于 2013-01-22T11:27:33.613 回答
1

设备修饰符必须在文件名的末尾http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/App-RelatedResources/App-RelatedResources.html

所以正确的文件名是 Default-568h@2x~iphone.png

于 2013-01-22T11:28:40.037 回答