iphone 4 - нанимает загрузку изображения в два раза - PullRequest
1 голос
/ 06 июля 2010

У меня есть 3 версии изображения: «myImage ~ ipad.png», «myImage ~ iphone.png» и «myImage@2x~iphone.png».

Очевидно, что последний имеет вдвое больший размер, чем второй.

Я загружаю их, используя

UIImage *imageU = [UIImage imageNamed:@"myImage.png"];
UIImageView *myView = [[UIImageView alloc] initWithImage:imageU];
[self.view addSubview:myView];
[myView release];

изображение отлично загружается на iPad и 3G / 3GS, но не на iPhone 4, где оно выглядит огромным, с удвоенным размером. iPhone 4 удваивает размер myImage@2x~iphone.png ??? (!!!)

Что может быть не так?

спасибо.

Ответы [ 2 ]

3 голосов
/ 06 июля 2010

Невероятно!Еще одна ошибка или плохой документ в Apple.

Это то, что документы говорят:

Обновление файлов ресурсов изображений

Работающие приложенияВ iPhone OS 4 теперь должны быть включены два отдельных файла для каждого ресурса изображения.Один файл предоставляет версию данного изображения в стандартном разрешении, а второй - версию того же изображения в высоком разрешении.Соглашения об именах для каждой пары файлов изображений следующие:

Стандарт: ImageName device_modifier.filename_extension

Высокое разрешение: ImageName @ 2x device_modifier.filename_extension

и части каждого имени указывают обычное имя и расширение для файла.Эта часть является необязательной и содержит строку ~ ipad или ~ iphone.Вы включаете один из этих модификаторов, когда хотите указать разные версии изображения для iPad и iPhone.Добавление модификатора @ 2x для изображения с высоким разрешением является новым и позволяет системе узнать, что изображение является вариантом стандартного изображения с высоким разрешением.

Итак, согласно вашим документамдолжны называть ваши изображения так, как я: «myImage ~ iphone.png» (знания), «myImage@2x~iphone.png» (нанимает) и «myImage ~ ipad.png» (ipad).

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

  1. вы должны назвать ваши файлы как "myImage ~ iphone.png" (lores), "myImage ~ iphone@ 2x.png "(нанимает) и" myImage.png "(ipad).

В ДРУГИХ СЛОВАХ: СДЕЛАЙТЕ @ 2X В КОНЦЕ , а не в середине, какрекомендовано Apple и НЕ ОСТАВЛЯЙТЕ ЛЮБЫХ ТИЛЬДОВ на изображениях iPad .Но это еще не все: даже если вы сделаете все это, вы сможете загружать свои изображения только с помощью [UIImage imageNamed: ...], это означает, что все ваши изображения будут кэшироваться.Это связано с тем, что ImageWithContentsOfFile не работает с SDK 4, даже если он указан в документах.

Полное решение включает использование THIS STUFF .

Спасибо Appleдля этого наполовину приготовленного материала.

обновить на этот ответ: Это показывает, что я прав в конце концов.Это ошибка.Я сообщил об этом Apple 8 июля, и сегодня я получил от них следующее сообщение: «Это продолжение идентификатора ошибки № 8161396. После дальнейшего расследования было установлено, что это известная проблема, которая в настоящее время исследуетсяпроектирование. Эта проблема была сохранена в нашей базе данных ошибок с исходным идентификатором ошибки # 8084451. "

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

Это не так, вы делаете что-то не так, проверьте прямоугольник просмотра изображений: изображение @ 2x на iphone4 имеет те же координаты и размер, что и меньшее изображение на старых телефонах

NSLog(@"%f %f %f %f",myView.frame.origin.x,myView.frame.origin.y,myView.frame.size.width,myView.frame.size.height);

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