iPhone中的设备特定资源

6
根据iOS参考库
在iOS 4.0及更高版本中,可以将单个资源文件标记为仅适用于特定类型的设备。
这是否意味着,如果您为3.X设备创建通用应用程序,特别是3.2 iPad,您不能使用带有〜ipad〜iphone后缀的特定设备资源?
如果是这样,那么这是否是处理特定设备资源的正确方法?
UIImage* anImage;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    anImage = [UIImage imageNamed:@"MyImage-iPad.png"];
} else {
    anImage = [UIImage imageNamed:@"MyImage-iPhone.png"];
}  

我需要了解的其他注意事项吗?

1个回答

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

请记住,"ipad"和"iphone"是区分大小写的,并且应该是小写字母。在调用类别方法时,您可能需要注意这一点。 - Dave Batton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接