在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"];
}
我应该知道的任何其他注意事项?
答案 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