使iPad应用程序成为通用应用程序
-
23-10-2019 - |
题
我有一个我想使通用的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版本要好得多。