zpa*_*ack 49 iphone cocoa-touch objective-c ipad ios
您可以使用设备修改器(即~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.
Ken*_*and 50
我有同样的问题.答案一开始没有意义,但好消息是它很容易做到!:)
只需在没有任何修饰符的情况下命名您的iPad xib,并使用~iphone修饰符指定您的iPhone xib,它就会正确选择它们.
因此,使用MyViewController,您将拥有MyViewController.xibiPad和MyViewController~iphone.xibiPhone.然后你可以用简单的alloc/init初始化你的视图控制器.
[[MyViewController alloc] init] 它会抓住正确的xib.
所以,当我在XCode中创建一个新的视图控制器时,我总是选择用于为ipad格式化它的框,因为它将创建的xib将命名为MyViewController.xib,你希望那个是iPad大小的xib.然后我创建了第二个xib,格式化为iPhone并使用~iphone修饰符命名.
文档有时会有些矛盾,但是这个页面讨论了带有标识符的资源如何默认为iPad.
查看有关使用高分辨率图像的部分.我知道我们正在谈论xib而不是图像,但它确实有效.我的最后6个应用程序都使用了这个成语.
小智 25
实际上,它在文档中明确定义,但作为脚注.
在"使用NSBundle加载NIB文件"底部的注释中:
注意:如果要为iOS开发通用应用程序,则可以使用特定于设备的命名约定自动为基础设备加载正确的nib文件.有关如何命名nib文件的详细信息,请参阅"iOS支持特定于设备的资源".
链接到Cocoa Conceptual LoadingResources
但是,是的,这是4.0+唯一的功能.
| 归档时间: |
|
| 查看次数: |
19127 次 |
| 最近记录: |