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

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

alt text

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

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

  • tab-featured.png
  • tab-featured@2x.png
  • tab-themes.png
  • tab-topics@2x.png
  • (... и т. Д.)

В конструкторе интерфейса я указал версию каждого изображения в низком разрешении(имя файла БЕЗ "@ 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 изображения из своего приложения, просто чтобы все снова правильно отображалось с художественным оформлением в низком разрешении.После того, как приложение снова отобразило изображения правильного размера (хотя и с низким разрешением), затем я один за другим начал добавлять изображения @ 2x обратно, ожидая, что что-то сломается.Кажется, во второй раз он работал нормально. Не знаю, почему или что случилось.Похоже, SDK только что пересек несколько проводов относительно того, что произошло.

Ответы [ 3 ]

4 голосов
/ 08 июля 2010

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

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

0 голосов
/ 12 июня 2013

В соответствии с рекомендациями Apple по дизайну размер изображений UITabBarItem должен быть 30x30 и 60x60 (для сетчатки).

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html

Я столкнулся с той же проблемой и решил ее, настроив изображениеразмеры.

0 голосов
/ 03 сентября 2010

Попробуйте опустить расширение файла .png. Это заставляет ОС искать файлы с низким разрешением и версии @ 2x соответственно. Это задокументировано в обзоре Apple «Поддержка экранов высокого разрешения».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...