2010-10-17 5 views
6

Согласно iOS Reference Library:устройств Специфических ресурсов в iPhone

В прошивкой 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"]; 
} 

Любые дополнительные соображения, о которых я должен знать?

ответ

2

Да, вы правы, эта функция не работает на текущих iPads - 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 
+0

Помните, что «~ ipad» и «~ iphone» чувствительны к регистру и должны быть строчными. Вы можете захотеть уважать при вызове метода вашей категории. –

Смежные вопросы