iPad 3 Retina Display, @2x изображения и приложения уже в магазине
таким образом, некоторые iPad в будущем, вероятно, будут иметь дисплей Retina. И Apple, скорее всего, будет придерживайтесь парадигмы @2x. Я ожидал этого некоторое время, и поэтому у меня уже есть @2x artwork для iPad в моих приложениях; некоторые из них уже в app store.
мой вопрос таков: мне нужно будет перекомпилировать и/или повторно отправить приложения для использования указанного произведения искусства, когда этот мифический iPad будет выпущен, чтобы воспользоваться этими файлами? Или это что-то запеченное в сама ОС, и она должна просто автоматически использовать их?
(Так как то же самое произошло раньше, что произошло с приложениями, выпущенными под SDKs pre-iPhone-4, которые имели правильное оформление? Они только что работали?)
3 ответов
сегодня я экспериментировал с iPad retina, и вот что, кажется, происходит:
- Если приложение скомпилировано с относительно недавним Xcode (возможно, 4.2+), используются изображения @2x, как и при выходе iPhone 4.
- Если приложение было скомпилировано с Xcode 3, @ 2x изображения не используется, даже если присутствует. (например, в гибридном приложении с поддержкой iphone-4.)
(У нас есть ряд проектов на основе XCode-3, Многие из которых являются гибридными для retina iPhone. Ни один из них не использовал графику @2x на новом ipad. Когда я скомпилировал тестовый проект в Xcode 3 и Xcode 4, сборка 4 использовала ресурс retina, а сборка 3-нет. Дальнейшие эксперименты показали, что разница скомпилирована в сам исполняемый файл, поэтому это не просто информация.plist tweak, как я надеялся.)
[eta.: моя гипотеза заключается в том, что компиляция с более ранним SDK связывает вас с другой версией UIKit во время выполнения. Странные различия в поведении когда я обновляю наш код, кажется, это подтверждает. Если кто-то знает заклинание, чтобы знать наверняка, пожалуйста, прокомментируйте.]
[отредактировано, чтобы добавить, снова: есть некоторая разница в перьях. Старый проект, открытый в xcode 4, не будет использовать графику @2x, пока я не сохраню свое главное окно.перо; затем это произошло во всем, без каких-либо других изменений. Я подозреваю скрытое свойство объекта UIWindow.]
то, что я нашел при создании с XCode 4.2 (iOS SDK 5.0), работающим на Snow Leopard, следующее:
изображения, загруженные программно с помощью [UIImage imagedNamed:] в вашем коде будет правильно загрузить retina @2x изображения на сетчатке iPad.
изображения, указанные на кнопках и представлениях в файлах Interface Builder XIB, обычно неправильно загружают изображения @ 2x retina.
временное решение, я открыл было заставить объектами UIImage в кэш каждого из изображений ссылка в вашем XIB с помощью вызовов [UIImage imagedNamed:] в вашем контроллере представления (или соответствующем) initwithnibname:(NSString *) bundle:(NSBundle *). Программный метод делает хорошую нагрузку @2x, и система кэширует ее,что механизм загрузки XIB заканчивается ссылкой, давая изображения сетчатки. Например:
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
// Doing this to precache proper retina versions, because older xcode nibs aren't loading them correctly on retina iPads with XCode 4.2 builds
[UIImage imageNamed:@"my_button.png"];
[UIImage imageNamed:@"my_other_button.png"];
}
return self;
}
Я предполагаю, что построение с XCode 4.3 (SDK 5.1) работает правильно с XIBs, но я не был готов перейти на Lion только для использования этой версии В Xcode.
Я предполагаю, что это будет просто работать на устройстве. Насколько я понимаю, [UIImage imageNamed:] ищет @2x, если устройство поддерживает его. Поэтому он кажется встроенным в iOS. Это всего лишь догадка.