我有一个想要制作 Universal 的 iPad 应用程序,但这似乎非常困难。我已经改变了一些东西,以便我支持这两种构建,但是在构建时,我遇到了很多关于使用 UIPopOvers 的错误。这是我的问题:
- 为什么
UI_USER_INTERFACE_IDIOM()
在 3.1.3 上不编译或注册? - 我可以有条件地在基于的类定义中包含变量
UI_USER_INTERFACE_IDIOM()
吗? - 如果没有,我应该制作两个不同的视图控制器吗?
谢谢!
我有一个想要制作 Universal 的 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 开始可用。UIDeviceuserInterfaceIdiom
的属性也有同样的限制。这意味着您只能从 SDK 3.2 开始获得通用应用程序。
我可以有条件地在基于 UI_USER_INTERFACE_IDIOM() 的类定义中包含变量吗?
不,UI_USER_INTERFACE_IDIOM
宏只是获取设备当前 UI 惯用语的运行时快捷方式。
如果没有,我应该制作两个不同的视图控制器吗?
如果您在两个设备之间有非常不同的 UI,那么使用两个不同的视图控制器并使用UI_USER_INTERFACE_IDIOM
宏在运行时(例如在应用程序控制器中)创建正确的视图控制器会更明智。
我很幸运,只需选择目标然后转到 Project->Upgrade current target for iPad。
我的应用程序非常简单,主要由表格视图和 web 视图组成,但值得备份并尝试...
是的,您必须将其作为可针对 3.1 的 3.2 应用程序提交。*
您还需要做很多其他事情:确保可以在任何方向查看它(为此第一次被拒绝)。确保您已创建所有新图像。你必须有 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)];
这比像我看到的一些建议那样检查操作系统版本要好得多。