2010-07-27 1 views
14

У меня есть TabBarController, который устанавливает изображение для вкладки, как так, в методе -init:Привет-Res @ 2x изображение не подхватили для элемента панели вкладок

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

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

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

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

+0

Вы дважды проверили регистр букв имени файла? – ohhorob

+0

Да, подходит для случая – psychotik

+0

Что происходит, когда вы удаляете версию с низким разрешением и оставляете только высокое разрешение в комплекте? – iwasrobbed

ответ

0

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

+0

Это не влияет на мою проблему – psychotik

+1

Что делает 'NSLog (@"% f ", [[UIImage imageNamed: @" tabImage.png] scale); 'print –

+0

Jushua - он печатает 2.000000 – psychotik

1

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

+0

Да, я уверен. – psychotik

0

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

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

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

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

0

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

  1. Accidentally именование небольших версии @ 2x вместо больших тех
  2. Имея большие версии be немного пропущено (на один пиксель)
11

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

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

[UIImage imageNamed:@"foo.png"] 

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

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

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

[UIImage imageNamed:@"foo"] 

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

+0

Уборка и восстановление решили! Благодарю. –

+0

+1 для чистой и перестроить. – Soup

0

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

image.png 60x60 [email protected] 120x120

тогда просто использовать [UIImage imageNamed:@"image.png"]

сделал это так с самодельных пуговиц, и она работала для меня (IOS 4,1)

+0

Это должно быть 'image @ 2x.png' not' image @ 2.png'. –

3

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

+0

этот и первый ответ исправил мою проблему. –

0

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

0

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

1

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

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

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

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

0

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

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

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

Смежные вопросы