По данным Apple, iPhone 4 имеет новое и лучшее разрешение экрана:
3,5-дюймовый (диагональный) широкоэкранный Мультисенсорный дисплей
Разрешение 960 на 640 пикселей на уровне 326 пкс/дюйм
Эта небольшая деталь влияет на наши приложения тяжелым способом. Большинство демонстрационных приложений в сети имеет одну общую черту: Они располагают представления в то, чтобы полагать, что экран имеет фиксированный размер 320 x 480 пикселей. Таким образом, то, что большинство (если не все) разработчики делает: они разработали все таким способом, что осязаемая область - (например), большой 50 x 50 пикселей. Как раз касаться его. Вещи были расположены относительно верхнего левого угла, для достижения определенной позиции по экрану - скажем, центр, или где-нибудь внизу.
Когда мы разработаем приложения с высоким разрешением, они, вероятно, не будут работать над более старыми устройствами. И если бы они делают, они перенесли бы много от 4 времен размер любого изображения, имея необходимость уменьшить масштаб их в памяти.
Согласно Поддержка экранов с высоким разрешением в представлениях , из документации Apple:
На устройствах с экранами высокого разрешения
imageNamed:
,imageWithContentsOfFile:
иinitWithContentsOfFile:
методы автоматически ищет версию запрошенное изображение с@ 2x
модификатор в его имени. Если найдет, вместо этого он загружает это изображение. Если вы это сделаете не предоставлять версию с высоким разрешением данного изображения, объект изображения по-прежнему загружает стандартное разрешение изображение (если оно существует) и масштабирует его во время рисования.Когда он загружает изображение, объект UIImage автоматически устанавливает размер и масштабировать свойства до соответствующих значений на основе суффикса файла изображения. Для изображений со стандартным разрешением устанавливает свойство масштаба на 1.0 и устанавливает размер изображения равным размеры изображения в пикселях. Для изображений с суффиксом @ 2x в имени файла, он устанавливает свойство масштаба на 2,0 и уменьшает вдвое значения ширины и высоты до компенсировать масштабный коэффициент. Эти половинные значения правильно коррелируют с размеры, основанные на точках, которые вам нужно использовать в логическом координатном пространстве для визуализировать изображение.
Да, это правда.
Согласно WWDC, похоже, что Apple построила некоторую форму автоматического преобразования, чтобы разрешение для приложений не было полностью отключено. Подумайте о преобразовании DVD в HDTV.
Я предполагаю, что Apple знает, что использовали большинство разработчиков стандартов, и уже будет использовать их для немедленного преобразования. Конечно, если вы программируете приложение для использования преимуществ нового разрешения, оно будет выглядеть намного лучше, чем какой бы ни был результат автоконвертации яблок.
Это чисто предположение, но если разрешение действительно 960 x 640 - это ровно в два раза больше разрешения, чем у текущей версии. Для iPhone было бы тривиально просто проверить цель сборки приложения, определить устаревшую версию приложения и просто масштабировать ее на 2. Вы никогда не заметите разницы.
Репортаж Engadget о ключевом выступлении включал следующую расшифровку речи Стива Джобса
...Это делает так, что ваши приложения запускаются автоматически на нем, но он отображает текст и элементы управления в более высоком разрешении. Ваши приложения выглядят еще лучше, но если вы сделаете немного поработать, то они будут выглядеть потрясающе. Поэтому мы советуем вам сделать это
Итак, из этого я делаю вывод, что если вы используете существующие API, ваше приложение будет масштабироваться. Если вы воспользуетесь новыми API iOS4, вы сможете получить все удовольствия от новых пикселей.
Похоже, с дисплеем все в порядке, но меня беспокоит логика моей игры. Будут ли позиции touchesBegan возвращать очки в новом разрешении? Границы экрана будут другими, такие вещи потенциально могут быть для меня проблемами.
Масштабирование в двойное разрешение для отображения - это просто, но будет ли это масштабирование применяться ко всем api, которые вводят/выводят координаты экрана? Если нет, то все будет ломаться, не так ли?
Справедливо, если это было обработано широко во всем фреймворке. Я предполагаю, что есть много потенциальных api, которые могут повлиять на это.
Для тех, кто пришел в эту тему в поисках решения для мобильного веб-интерфейса, обратите внимание на это сообщение в блоге Webkit: http://webkit.org/blog/55/high-dpi-web-sites/
Похоже, что Webkit решил эту проблему еще четыре года назад.
Все ваши метки и системные кнопки будут иметь разрешение 326dpi, но ваши изображения по-прежнему будут удваиваться в пикселях, пока вы не добавите ресурсы высокого разрешения. В настоящее время я обновляю свои приложения. Если вы собираете и запускаете iPhone 4 sim, тогда он отображается на 50%, перейдите в Window> Scale> 100%, чтобы увидеть реальную разницу! Этикетки гладкие, мои изображения выглядят шокирующе!