2

我的问题很简单: 1. 我做了一个 iphone 应用程序,全部在 cocos2d 中完成。2.我将它改编为iphone4-retina,所有PNG文件都有它们的-hd副本。

在 iPhone 中运行,应用程序正确显示 (320x480)。在 iPhone4-retina 中运行,应用程序也正确显示(640x960)。

但是在 iPad 上运行,如果应用程序设置为仅 iPhone,它可以正常运行,但只能作为 iPhone 分辨率 (320x480)。如果应用程序设置为 iPhone/iPad,当然会显示错误。

我确信应该有一个选项可以强制兼容视网膜的 iPhone 应用程序也作为视网膜在 iPad 上运行(苹果人不会傻到错过它),但我就是找不到。

选项在哪里?或者,cocos2d 是否有一个同样简单的开关来完成这项工作?我不需要诸如使用相对坐标或任何需要修改超过 20 行代码的建议。

4

1 回答 1

2

据我所知,iPhone 应用程序不会自动适应 iPad。您仍然应该能够为 iPhone 和 iPad 创建一个通用应用程序,然后根据您是在一台设备上还是在另一台设备上运行来重新创建您的 UI。

具体来说,您可以:

  1. 为通用应用程序(armv6 和 armv7,针对 iPad 和 iPhone)创建一个 XCode 项目,并在那里导入您现有的项目(源、资源、设置)。

    1b。(您可以修改您现有的项目,但要正确执行此操作可能会比较棘手。)

  2. 除了 iPhone 的图标和默认图像外,还按照 iPad 指南添加图标和默认图像;

至于其余部分,您可以采用与此处为 Xibs突出显示的方法类似的方法:

  1. iPad测试:

    +(Bool)isIpad{ return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad); }

  2. 加载前翻译图像名称:

    +(NSString*)properImageFileName:(NSString*)imageName { if ([xxxx isIpad]) { return [NSString stringWithFormat:@"ipad_%@", imageName]; } 其他 { 返回图像名称;} }

因此,如果您在 iPhone 上,图像名称不会更改,并且将遵循 iPhone 的视网膜显示约定;如果您在 iPad 上,您可以随时更改名称并使用正确的图像。(当然,您可以使用您喜欢的约定来识别 iPad 图像)。

这应该让它变得微不足道,但请记住在通用应用程序中包含所有图像会造成大小损失。

于 2011-05-24T08:42:36.803 回答