iPhone中的设备专用资源

时间:2010-10-17 10:41:13

标签: iphone ipad resources ios universal-binary

根据iOS Reference Library

  

在iOS 4.0及更高版本中,它是可能的   将各个资源文件标记为   仅适用于特定类型的   设备

这是否意味着如果您要为3.X设备创建通用应用程序,特别是3.2 iPad,则不能将设备特定资源与~ipad~iphone一起使用sufixes?

如果是这样,这是处理设备特定资源的正确方法吗?

UIImage* anImage;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    anImage = [UIImage imageNamed:@"MyImage-iPad.png"];
} else {
    anImage = [UIImage imageNamed:@"MyImage-iPhone.png"];
}  

我应该知道的任何其他注意事项?

1 个答案:

答案 0 :(得分:2)

是的,你是对的,这个功能在目前的iPad上不起作用 - iOS 3.2。

作为一种解决方法,我在UIImage中创建了一个类别,因此我可以像anImage = [UIImage mbImageNamed:@"MyImage.png"]一样使用它。类别方法只是在iPad上的后缀之前放置“~iPad” - 代码与你的类似。

另一个丑陋的事情是UIWindowControllers根据设备不加载xib文件。我为所有窗口控制器创建了一个基类,并加载了iPad特定的XIB:

@implementation MBPadAwareWindowController
- (id)init
{
    NSString *className = NSStringFromClass([self class]);
    NSString *nibName = UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad ? className : [className stringByAppendingFormat:@"-iPad"];
    return [self initWithNibName:nibName bundle:nil];
}
@end