Изображение 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 самостоятельно.