Изображение Hi-Res @2x не подхвачено для элемента табуляции

У меня есть TabBarController, который устанавливает изображение для вкладки так, в методе -init:

self.tabBarItem.image = [UIImage imageNamed:@"tabImage.png"];

У меня есть файл [email protected] В симуляторе iPhone 4 или телефоне изображение привет-res не подбирается - версия с низким разрешением просто расширяется.

Любые идеи, почему это может быть?

EDIT: Дополнительная информация: Если я попытаюсь явно использовать [email protected] (или просто [email protected]), то изображение вкладки, которое я вижу, чрезвычайно велико и взорвано за пределы вкладки, как если бы оно масштабировалось от 60 пикселей до 120 пикселей. Таким образом, похоже, что любое имя является предложением, которое рассматривается как изображение масштаба = 1.0.

Ответы

Ответ 1

Обратите внимание, что симулятор не чувствителен к регистру, но это устройство. Убедитесь, что case соответствует ТОЧНО. Если вы изменили случай с именем файла в какой-то момент, вам нужно будет очистить и перестроить. Иногда для симулятора мне приходилось фактически удалять папку в библиотеке /Application Support/iPhone Simulator/4.3/Applications/, чтобы восстановить переименование переименованного изображения.

Всегда используйте

 [UIImage imageNamed:@"foo.png"]

Это будет работать на устройствах 3.x и 4.x и на симуляторе 4.x. Устройства с Retina Displays (и симулятором 4.x) будут волшебным образом отображать версии ваших 2x; iOS был изменен, чтобы быть умным об этой функции и файлах @2x.png.

Удостоверьтесь, что оба файла @2x.png и normal.png добавлены в файл проекта и выполняете полную очистку и сборку. Как уже упоминалось, проверьте размер изображений; видимо, если они не точно в два раза превышают размеры, это не сработает (я не проверял это сам).

Если вы выйдете из .png, он будет работать только на iOS 4.0. Поэтому, если вы создаете приложение 4.0+, вы можете запросить:

    [UIImage imageNamed:@"foo"]

Если у вас есть только одно приветственное изображение и вы хотите использовать его как на устройствах Retina, так и на не Retina, вам нужно будет изменить view.contentMode на шкалу, чтобы она соответствовала.

Ответ 2

У меня была та же проблема. Оказалось, что мой png не был квадратным. Решение: сделайте его квадратным, и оно будет работать.

Ответ 3

Вы уверены, что файл был добавлен в проект XCode и отображается в проводнике проекта?

Ответ 4

У меня тоже была эта проблема.

Сделайте 2 изображения:

  • 30x30 пикселей
  • 60x60 пикселей

Суффикс изображения 60x60 пикселей с @2x. Например, [email protected]. Затем в вашем раскадровке или коде вы можете указать обычный, tabBarImage.png, а iOS выберет версию @2x по своему усмотрению.

Ответ 5

Теперь вы можете оставить .png. Я считаю, что он все равно будет работать, но вы можете попробовать это.

Ответ 6

Я только что через несколько часов переделал искусство в The Gimp и попытался распознать его и загрузить его на iPhone 4.

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

Я не смог различить какой-либо шаблон. Мои изображения загружаются с помощью [UIImage imageNamed:@"<name>.png"] в одноэлементный. Я проверил настройки масштаба изображения после запуска, а некоторые из них были 1.0 (старое искусство), а некоторые были 2.0 (новое искусство).

Единственный способ решить эту проблему - удалить и повторно добавить изображения с высоким разрешением, которые не были распознаны.

Ответ 7

Две глупые ошибки (оба из которых я сделал раньше), которые могут вызвать эту проблему:

  • Случайно называя маленькую версии @2x вместо больших те,
  • Наличие больших версий слегка пропущен (на один пиксель).

Ответ 8

вам нужны 2 версии ваших изображений, и оба они должны находиться в одном месте в папке проекта и добавлены в проект

image.png 60x60 [email protected] 120x120

просто используйте [UIImage imageNamed:@"image.png"]

сделал это с помощью самодельных кнопок, и это сработало для меня (iOS 4.1)

Ответ 9

Еще одна вещь, которую нужно искать - это иметь два изображения с тем же именем.

Ответ 10

У меня была такая же проблема. На изображении @2x была установлена ​​неправильная цель сборки (ServiceTests вместо MyProject).

Ответ 11

У меня была точно такая же проблема.

Сделайте два изображения: im1.png и [email protected] Вызов imageNamed: с первым.

Примечание. imageNamed: не инициализирует UIImage, поэтому использует его как переходный [[UIImageView new] initWithImage: [UIImage imageNamed: @ "im1.png" ]] или инициализирует UIImage самостоятельно.