我有一个iPad应用程序,我想制作环球,但这看起来非常困难。我已经改变了一些东西,所以我支持这两个版本,但是在构建时,我会遇到很多关于使用UIPopOvers的错误。这是我的问题:
UI_USER_INTERFACE_IDIOM()
无法在3.1.3编译或注册?UI_USER_INTERFACE_IDIOM()
?谢谢!
答案 0 :(得分:3)
为什么UI_USER_INTERFACE_IDIOM()没有 在3.1.3编译或注册?
UI_USER_INTERFACE_IDIOM
宏只能从3.2开始提供。对UIDevice的userInterfaceIdiom
属性的限制相同。这意味着您只能从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)];
这比检查操作系统版本要好得多,就像我看到的一些建议。