Специфичные для устройства ресурсы в iPhone - PullRequest
6 голосов
/ 17 октября 2010

Согласно справочной библиотеке iOS :

В iOS 4.0 и более поздних версиях можно пометить отдельные файлы ресурсов как пригодные для использования только на устройстве определенного типа.

Означает ли это, что если вы создаете универсальное приложение для устройств 3.X, и в частности для iPad 3.2, вы не можете использовать ресурсы, специфичные для устройства, с ~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 Ответ

2 голосов
/ 17 октября 2010

Да, вы правы, эта функция не работает на текущих 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...