Значки UITabBar высокого разрешения отображаются в полном размере на низком-res экране

Я нахожусь в процессе обновления моего приложения для iPhone к графике высокого разрешения, и я столкнулся с некоторыми проблемами с более старыми устройствами. Ситуация включает мои значки UITabBar.Посмотрите:

alt text

Главный снимок экрана выглядит корректным. Это было получено на последнем поколении iPhone (новый экран) выполняющий OS4. Однако второй снимок экрана является абсолютно неправильным. Значки высокого разрешения отображаются в 100% размером и становятся обрезанными. Тот второй снимок экрана был сделан от моего iPod touch второго генерала (старый экран) выполняющий OS4.

Так, я действительно смущен здесь. Я перечитал по документации Apple, и насколько я знаю, что делаю все, чего они требуют. В моем комплекте приложений у меня есть изображения, названные как:

  • вкладка-featured.png
  • tab-featured@2x.png
  • вкладка-topics.png
  • tab-topics@2x.png
  • (... и т.д....)

В интерфейсном разработчике я указал низкую-res версию каждого изображения (имя файла БЕЗ "@2x"), чтобы использоваться в панели вкладок. Если я понимаю документацию iPhone правильно, устройство должно автоматически обнаружить разрешение экрана и отобразить версию высокого разрешения при наличии. Таким образом, если что-нибудь, почти кажется, что мой iPod touch неправильно обнаруживает свое разрешение дисплея. Я пропускаю что-то здесь, возможно?

Любая справка или понимание, которое может быть предложено, ценились бы!Спасибо.

Обновление 1:

Никакая удача до сих пор. Я проявил ручной подход и добавил следующее в viewDidLoad команда моего UITabBarController:

- (void)viewDidLoad {
    [super viewDidLoad];

    UITabBarItem *tab;
    UIViewController *item;

    tab = [[UITabBarItem alloc] initWithTitle:@"Featured" image:[UIImage imageNamed:@"tab-featured.png"] tag:0];
    item = [self.viewControllers objectAtIndex:0];
    item.tabBarItem = tab;
    [tab release];

    tab = [[UITabBarItem alloc] initWithTitle:@"Topics" image:[UIImage imageNamed:@"tab-topics.png"] tag:1];
    item = [self.viewControllers objectAtIndex:1];
    item.tabBarItem = tab;
    [tab release];

    tab = [[UITabBarItem alloc] initWithTitle:@"Video" image:[UIImage imageNamed:@"tab-video.png"] tag:2];
    item = [self.viewControllers objectAtIndex:2];
    item.tabBarItem = tab;
    [tab release];

    tab = [[UITabBarItem alloc] initWithTitle:@"Experts" image:[UIImage imageNamed:@"tab-experts.png"] tag:3];
    item = [self.viewControllers objectAtIndex:3];
    item.tabBarItem = tab;
    [tab release];

    tab = [[UITabBarItem alloc] initWithTitle:@"Events" image:[UIImage imageNamed:@"tab-events.png"] tag:4];
    item = [self.viewControllers objectAtIndex:4];
    item.tabBarItem = tab;
    [tab release];
}

Это все еще приводит к тому же результату как выше (большие значки сокращения в панели вкладок). Кто-либо услышал о проблемах с UITabBar, заполняющим пар значка высокого разрешения?

Обновление 2:

Относительно комментария Заторов:

Да, я смог разрешить это. Это, казалось, было ошибкой со ссылками на файл в XCode. У меня заканчивались идеи, таким образом, я откатывал и начал снимать все изображения @2x из своего приложения, только получать все отображающееся правильно снова с низкими-res иллюстрациями. После того как приложение отобразило надлежащие изображения размера снова (хотя в с низкой разрешающей способностью), затем один за другим я начал включать изображения @2x назад, ожидая чего-то для повреждения. Это, казалось, хорошо работало вход второго раза. Не знайте то, почему или что произошло. SDK просто, казалось, получил некоторые провода, пересеченные относительно того, что произошло.

12
задан Kev 22 January 2011 в 15:30
поделиться

1 ответ

Насколько я понимаю, магия заключается в методах UIImage imageNamed: , imageWithContentsOfFile: и initWithContentsOfFile: . Передайте одному из них литерал NSString без "@ 2x" или расширения файла, и он волшебным образом найдет правильную версию файла для вашего устройства.

Одним из следствий этого является то, что изображения для элементов панели вкладок должны быть установлены программно. Возможно, IB еще не достаточно умен, чтобы написать перо, которое динамически выбирает изображение в зависимости от разрешения устройства. Поэтому попробуйте установить эти изображения вручную с помощью метода -viewDidLoad .

4
ответ дан 2 December 2019 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: