iPad / iPhone4 Universal Build

时间:2010-07-12 19:36:34

标签: iphone ipad universal

我想制作一款可在iPad和iPhone4上运行的通用版本。基本上这是游戏的“HD”版本,它将在更高分辨率的显示设备上运行。

据我所知,iPad和iPhone4都运行armv7,因此选择armv6和armv7似乎没有意义。虽然,这是Apple告诉你的事情。我知道这些说明是在iPhone4出现之前制作的,所以我很想知道是否有人知道为iPad 3.2和iPhone 4.0构建的程序。

如果SDK文档涵盖了这一点,我很抱歉,但我找不到它!

作为奖励,我想知道正在构建的特定SDK的定义,以便我可以进行编译时检查,以便在运行3.2编译时不会出错。层类中有一个名为contentsScale的特定成员,现在存在于4.0中。我只需要知道其中一个或两个的定义名称。 (3.2和4.0)

非常感谢!

凯尔

1 个答案:

答案 0 :(得分:2)

如果您希望支持的唯一设备是应用程序中的iPhone 4和iPad,则只能针对armv7进行构建,这会略微减小可执行文件的大小。但是,您需要将armv7添加到Info.plist中UIRequiredDeviceCapabilities键下的列表中,以确保App Store列表不允许您在armv6设备上安装它。尽管如此,在允许iPhone 4和iPad的情况下防止在armv7 iPhone 3G S和第三代iPod touch上购买和运行它将会更加棘手。

否则,您将像任何其他通用应用程序一样构建此应用程序。我建议从iPhone项目开始,将其转换为通用应用程序,或者从通用应用程序模板开始。

可以使用-respondsToSelector:方法检测是否在运行时实现特定方法。例如,以下代码检查CALayer上-contentsScale的可用性,并调整图层的比例以匹配显示的比例:

if ([self respondsToSelector:@selector(setContentsScale:)])
{
    Class screenClass = NSClassFromString(@"UIScreen");
    if ( screenClass != Nil)
    {
        id scale = [[screenClass mainScreen] valueForKey:@"scale"]; 
        [(id)self setValue:scale forKey:@"contentsScale"]; 
    }
}