使iPad应用程序成为通用应用程序

时间:2010-06-02 05:56:37

标签: iphone iphone-sdk-3.0 ipad iphone-sdk-3.2 uidevice

我有一个iPad应用程序,我想制作环球,但这看起来非常困难。我已经改变了一些东西,所以我支持这两个版本,但是在构建时,我会遇到很多关于使用UIPopOvers的错误。这是我的问题:

  • 为什么UI_USER_INTERFACE_IDIOM()无法在3.1.3编译或注册?
  • 我是否可以根据UI_USER_INTERFACE_IDIOM()
  • 在类定义中有条件地拥有变量
  • 如果没有,我应该制作两个不同的视图控制器吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

  

为什么UI_USER_INTERFACE_IDIOM()没有   在3.1.3编译或注册?

UI_USER_INTERFACE_IDIOM宏只能从3.2开始提供。对UIDeviceuserInterfaceIdiom属性的限制相同。这意味着您只能从SDK 3.2开始获得通用应用程序。

  

我可以有条件地拥有变量吗?   基于的类定义   UI_USER_INTERFACE_IDIOM()?

没有。 UI_USER_INTERFACE_IDIOM宏只是获取设备当前UI惯用语的运行时快捷方式。

  

如果没有,我应该做两个不同的   查看控制器?

如果两个设备之间的UI非常不同,则使用两个不同的视图控制器更明智,并使用UI_USER_INTERFACE_IDIOM宏在运行时(例如在应用程序控制器中)创建正确的视图控制器。

答案 1 :(得分:2)

我很幸运,只需选择目标然后转到Project->升级iPad的当前目标。

我的应用程序非常简单,主要包括表格视图和网页浏览,但值得进行备份并尝试...

是的,您必须将其作为3.2应用程序提交,其目标是3.1。*

您还需要做很多其他事情: 确保可以在任何方向查看它(第一次被拒绝)。 确保已创建所有新图像。你必须有3或4个图标,而不是像所需的iPhone应用程序一样。 (iPad图标,iPhone图标,聚光灯的小图标等)。 当然还有iPad尺寸的商店截图。

我用来测试它是iPad还是iPhone的一种非常好的方法是检查设备是否可以使用分割视图控制器,因为在可预见的未来,没有像iPhone一样小的屏幕的设备将能够使用拆分视图控制器。我刚刚为我创建了一个函数:

+(BOOL)isIpad{ return NSClassFromString(@"UISplitViewController") != nil; }

然后在我的应用中,我希望根据设备显示不同的内容,我只是检查一下:

int width = 150;
if([NabAppDelegate isIpad]){
   width = 350;
} else {
   width = 150;
}
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5,10,width,25)];

这比检查操作系统版本要好得多,就像我看到的一些建议。