Привет-Res @ 2x изображение не выбирается для элемента панели вкладок - PullRequest
14 голосов
/ 27 июля 2010

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

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

У меня есть файл tabImage@2x.png в ресурсе. В симуляторе iPhone 4 или телефоне изображение в высоком разрешении не снимается - версия в низком разрешении просто увеличивается.

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

РЕДАКТИРОВАТЬ: Дополнительная информация: Если я попытаюсь явно использовать tabImage@2x.png (или просто tabImage@2x), то изображение вкладки, которое я вижу, будет чрезвычайно большим и взорвано за пределы вкладки, как будто оно масштабируется от 60 до 120 пикселей. Таким образом, похоже, что имя любого источника рассматривается как масштабное изображение = 1,0.

Ответы [ 11 ]

11 голосов
/ 27 октября 2010

Обратите внимание, что симулятор не чувствителен к регистру, но устройство.Убедитесь, что случай соответствует точно.Если вы изменили регистр имени файла в какой-то момент, вам нужно будет очистить и перестроить.Иногда для симулятора мне приходилось сдувать папку в папке «Библиотека» / «Поддержка приложений» / «Симулятор iPhone» / «4.3» / «Приложения», чтобы перестроить и переименовывать изображение.

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

 [UIImage imageNamed:@"foo.png"]

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

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

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

    [UIImage imageNamed:@"foo"]

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

3 голосов
/ 13 апреля 2011

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

1 голос
/ 18 января 2013

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

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

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

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

1 голос
/ 27 июля 2010

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

0 голосов
/ 08 февраля 2013

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

Создайте два изображения: im1.png и im1@2x.png Звоните imageNamed: с первым.

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

0 голосов
/ 17 августа 2012

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

0 голосов
/ 25 октября 2011

Еще одна вещь, на которую стоит обратить внимание, это наличие двух изображений с одинаковым именем.

0 голосов
/ 21 ноября 2010

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

image.png 60x60 image@2.png 120x120

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

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

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

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

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

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

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

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

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

...