您可以使用设备修改器(即~ipad)在Info.plist中提供设备特定的密钥,并指定特定于设备的启动图像(iPhone的Default.png和iPad的Default~ipad.png,例).Apple Docs中特别提到了这两件事,但他们并未说这适用于任何其他类型的文件.
我发现(非常偶然)这适用于通过加载.xib文件initWithNibName:bundle:.例如,我可以使用MyView.xib和MyView~ipad.xib,以及此代码:
MyViewController *viewController = [[MyViewController alloc]
initWithNibName:@"MyView" bundle:nil];
Run Code Online (Sandbox Code Playgroud)
...将在iPad上完全加载MyView~ipo.xib,在其他设备上加载MyView.xib.
那么,1)这是在某处记录的吗?我肯定找不到任何Apple文档.它确实比检查UI_USER_INTERFACE_IDIOM()并在任何地方硬编码两个不同的笔尖名称更容易,但如果没有记录,我有点不相信它.
并且,2)有谁知道这个iOS开始工作的版本是什么?我只在4.2中试过它,它在那里工作.一般的设备修饰符(即使是上面列出的文档内容)也只有4.0.
我已经使用XCode中的向导将iPhone应用程序转换为通用应用程序.
它建立得很好但显然在某些方面看起来有点垃圾:)
我需要根据使用的设备加载笔尖.我不希望创建我的视图控制器,initWithNib因为我已经有代码来创建带有一些数据(initWithMyLovelyData)的控制器,它与nib加载没有任何关系.
我知道要找出你使用的设备,UI_USER_INTERFACE_IDIOM()所以我尝试覆盖initWithNibName实际的视图控制器本身,假设它们以某种方式在内部调用.但它不起作用,因为我猜我不确定语法.
我试过了
if(ipad..) self = [super initWithNibName:@"MyIpadNib" bundle:nibBundleOrNil];
Run Code Online (Sandbox Code Playgroud)
这不起作用:/
编辑 - 我知道我已经大量编辑了这个,在做了一些更多的研究之后让我的问题更加具体 - 道歉!