我们有一个应用程序,它使用了 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 的设备标识符无法正常工作感到失望。