我有一个我想使通用的iPad应用程序,但是这似乎很困难。我已经改变了一切,以便我支持两种构建,但是在构建时,我会遇到很多关于使用Uipopovers的错误。这是我的问题:

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

谢谢!

有帮助吗?

解决方案

为什么UI_USER_INTERFACE_IDIOM()未在3.1.3上进行编译或注册?

UI_USER_INTERFACE_IDIOM 宏仅从3.2开始可用。对 userInterfaceIdiom 财产的 UIDEVICE. 。这意味着您只能从SDK 3.2开始获得通用应用程序。

我可以在基于ui_user_interface_idiom()的类定义中有条件地具有变量吗?

UI_USER_INTERFACE_IDIOM 宏只是一个运行时快捷方式,可以获取设备的当前UI习语。

如果没有,我应该做两个不同的视图控制器吗?

如果两种设备之间的UI截然不同,则使用两个不同的视图控制器,并在运行时(例如,在应用程序控制器中)使用该功能更明智 UI_USER_INTERFACE_IDIOM 宏。

其他提示

我只选择目标,然后去iPad的Project->升级当前目标。

我的应用程序非常简单,主要由桌面视图和网络视图组成,但是值得进行备份和尝试...

是的,您必须将其提交为一个可以针对3.1的3.2应用程序。

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

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

+(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)];

这比我看过一些建议的OS版本要好得多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top