Приложение не видит @ 2x изображений - PullRequest
4 голосов
/ 08 сентября 2010

Это сводит меня с ума. Я искал 2 дня, и я не могу найти никакого реального решения или объяснения, почему это происходит. Я знаю, что здесь есть темы, а также некоторые другие места, но они не помогли. Я прочитал документацию Apple по этому вопросу.

У меня нормальные и @ 2x изображения в моем приложении. Они названы правильно (edit_image.png и edit_image@2x.png). Они имеют правильный размер (обычно 60x60, @ 2x 120x120). Они оба копируются в комплект приложений, и когда я проверяю содержимое, я вижу их обоих в корне.

Я хватаю изображение, звоня [UIImage imageNamed:@"edit_image"]. Это никогда не захватывает 2x изображение. Он видит только 1x изображение. Однако, если я сначала проверю шкалу и использую этот код:

if ([[UIScreen mainScreen] scale] == 1) {
    NSLog(@"test");
    editImage = [UIImage imageNamed:@"edit_image"];
} else {
    editImage = [UIImage imageNamed:@"edit_image@2x"];
}

Затем он получает правильное изображение. Я перепробовал все. Я удалил высокое разрешение из проекта, очистил, повторно добавил высокое разрешение, очистил и затем построил, без кубиков. Я удалил все изображения и заново их добавил, без кубиков. Я сделал все, что мог придумать. Что, черт возьми, здесь происходит?

Ответы [ 4 ]

4 голосов
/ 29 сентября 2010

Вы создаете универсальное приложение для iPhone и iPad. Если есть универсальное приложение, вам нужно создать 3 набора изображений:

1) edit_image ~ iPad.png

2) edit_image ~ iphone.png

3) edit_image@2x~iphone.png

каждый с одинаковым разрешением 72 пикселей / дюйм. Хотя вам нужно предоставить двойной размер для этого изображения @ 2x, я думаю, вы уже это сделали.

Теперь попробуйте следующий код

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"edit_image" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath];

Важно: при создании версии вашего высокого разрешения изображения, поместите новые версии в то же место в вашем приложении расслоение как оригинал.

Источник: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/SupportingResolutionIndependence/SupportingResolutionIndependence.html

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

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

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

Я страдал от точно такой же проблемы и, наконец, нашел решение (после 2 дней поиска).

В моем случае имя изображения @ 2x не совсем соответствовало изображению нормального размера: tileSet.png и tileset@2x.png.

Что так трудно обнаружить, так это то, что файл @ 2x действительно имел правильное имя в Finder и в XCode. Я смог обнаружить проблему только открыв изображение в Preview и посмотрев на Inspector. Я не знаю достаточно о файловой системе Mac, чтобы объяснить, как это происходит, но как только я переименовал файл в gibberish, а затем переименовал его обратно в tileSet@2x.png, все стало работать как положено.

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

Вам не нужно добавлять бит "@2x" или вообще иметь логику if-else.Просто используйте [UIImage imageNamed:@"edit_image"].

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