Как подстроить под разрешение экрана iPhone 4?

Согласно Apple, у iPhone 4 новое и лучшее разрешение экрана:

Широкоформатный дисплей Multi-Touch с диагональю 3,5 дюйма
Разрешение 960 на 640 пикселей, 326 пикселей на дюйм

Эта маленькая деталь сильно влияет на наши приложения. Большинство демонстрационных приложений в сети имеют одну общую черту: они позиционируют представления, полагая, что экран имеет фиксированный размер 320 x 480 пикселей. Итак, что делают большинство (если не все) разработчиков: они спроектировали все таким образом, чтобы осязаемая область была (например) размером 50 x 50 пикселей. Достаточно просто коснуться его. Вещи были расположены относительно верхнего левого угла, чтобы занять определенное положение на экране - скажем, в центре или где-то внизу.

Когда мы разрабатываем приложения с высоким разрешением, они, вероятно, не будут работать на старых устройствах. И если они это сделают, они сильно пострадают от того, что размер любого изображения в 4 раза больше, чем у любого изображения, и им придется уменьшать масштаб в памяти.


person Community    schedule 07.06.2010    source источник
comment
Хотя я не согласен с закрытием, основываясь на субъективности, на самом деле нет способа ответить на этот вопрос, пока не будут выпущены новые телефоны и люди не смогут с ними поиграть.   -  person NotMe    schedule 07.06.2010
comment
Это глупо - последствия этого довольно логичны. Вы можете легко смоделировать это, преобразовав основной вид в половину размера и высоты, одновременно увеличив его размер и высоту в два раза. Я сделал, и это отстой.   -  person dontWatchMyProfile    schedule 07.06.2010
comment
Почему все хорошие вопросы попадают в вики сообщества?   -  person Emil    schedule 29.06.2010


Ответы (8)


person Community    schedule 08.06.2010
comment
Имейте в виду, что представления UIKit отображаются в правильном масштабе, независимо от разрешения, де-факто. Пользовательские изображения вызывают беспокойство, как указано выше. (Вот почему вы не должны использовать их для рисования интерфейса, когда можете.) - person JoePasq; 08.06.2010
comment
@mystify, насколько я понимаю, @2x - это часть имени. Цитата из того же PDF-файла. Например, если у вас есть два файла изображений с именами Button.png и [email protected], вы должны использовать следующий код для запроса изображения кнопки: UIImage* anImage = [UIImage imageNamed:@"Button"]; - person ohho; 08.06.2010
comment
А как насчет iOS3.0? Что там можно сделать для отображения изображений с высоким разрешением на iPhone 4? Я хочу, чтобы мои приложения выглядели великолепно, но я также хочу, чтобы люди с 3.x могли его использовать ... - person Emil; 29.06.2010

Это чисто предположение, но если разрешение действительно 960 x 640 - это ровно в два раза больше разрешения, чем у текущей версии. Для iPhone было бы тривиально просто проверить цель сборки приложения, определить устаревшую версию приложения и просто масштабировать ее на 2. Вы никогда не заметите разницы.

person Community    schedule 07.06.2010

Сообщение Engadget о ключевой заметке включены следующие расшифровки стенограммы Стива Джобса

... Это делает так, чтобы ваши приложения запускались автоматически на этом, но он отображает ваш текст и элементы управления в более высоком разрешении. Ваши приложения выглядят даже лучше, но если вы немного поработаете, они будут выглядеть потрясающе. Поэтому мы предлагаем вам сделать это

Из этого я делаю вывод, что если вы используете существующие API-интерфейсы, ваше приложение будет увеличиваться. Если вы воспользуетесь преимуществами новых API-интерфейсов iOS4, вы сможете получить все необходимое с новыми пикселями.

person Community    schedule 07.06.2010

Похоже, с дисплеем все будет в порядке, но меня беспокоит логика моей игры. Будут ли позиции touchesBegan возвращать очки в новом разрешении? Границы экрана будут другими, такие вещи потенциально могут быть для меня проблемами.

person Community    schedule 08.06.2010
comment
Нет. Это делается с помощью CoreGraphics (я думаю), который не зависит от разрешения. - person Alexsander Akers; 13.06.2010
comment
Не рискуя НИКАКИМИ проблемами NDA, все iPhone всегда возвращали очки, а не пиксели. Поскольку точки используются в SDK 3.2 для iPad, я не ожидал, что это изменится для версий iPhone в будущем. - person Jann; 20.06.2010

Масштабирование до двойного разрешения для целей отображения просто, но будет ли это масштабирование применяться ко всем api, которые вводят / выводят координаты экрана? Если нет, то что-то сломается, не так ли?

Достаточно справедливо, если бы это было широко обработано во всем фреймворке ... Я бы предположил, что есть много потенциальных api-эффектов this.

person Community    schedule 08.06.2010
comment
Я предполагаю, что точка, в которой выполняются вычисления, находится на настолько низком уровне, что любой API может быть поверх этого. Таким образом, они могли легко прочитать значение из info.plist, чтобы узнать, имеет ли приложение высокое разрешение или нет, а затем соответствующим образом обработать любое взаимодействие пользователя с сенсорным экраном или любую операцию рисования. Ну, по крайней мере, это то, что я сделал бы, когда был руководителем команды iPhone SDK ;-) ... По словам Джобса, это не сломает наши приложения. Покупатели iPhone 4 возненавидели бы его, если бы вдруг 95% всех приложений перестали работать на их новом сверхдорогом устройстве. - person dontWatchMyProfile; 08.06.2010
comment
Это хорошо, если в дизайне было заложено дальновидное мышление. Я не удивлюсь, если это не заметят. Полагаю, я надеюсь найти подтверждение того, что это правда, от кого-то с sdk, который сможет это проверить. - person Mick N; 09.06.2010
comment
Я боюсь, что большинству из нас, за пределами США, придется долго ждать, пока мы сможем это увидеть. Если только в новом iPhone Simulator не появится новый результат. - person dontWatchMyProfile; 10.06.2010
comment
Симулятор iPhone имеет 3 целевых устройства: iPad, iPhone и iPhone 4. iPhone 4 показывает высокое разрешение (т.е. мне нужно прокрутить, чтобы увидеть весь экран на моем 15-дюймовом Macbook pro). - person Thomas Müller; 15.06.2010

Для людей, которые заходят в эту ветку в поисках решения для мобильного веб-интерфейса, ознакомьтесь с этим сообщением в блоге Webkit: http://webkit.org/blog/55/high-dpi-web-sites/

Похоже, что Webkit решил эту проблему четыре года назад.

person Community    schedule 10.06.2010

Да, это правда.

Согласно WWDC, похоже, что Apple построила некоторую форму автоматического преобразования, чтобы разрешение для приложений не было полностью отключено. Подумайте о преобразовании DVD в HDTV.

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

person Community    schedule 07.06.2010
comment
но имея в виду, что при увеличении размера всей графики в 4 раза (когда вы удваиваете высоту и ширину) все старые устройства сильно пострадают, загружая гигантские файлы и уменьшая их масштаб. - person dontWatchMyProfile; 07.06.2010
comment
возможно, мы не знаем, будет ли Apple проводить различие между приложениями для iphone 4 и устаревшими приложениями для iphone так же, как между приложениями для iphone и ipad. Возможно, если что-то специально разработано для iphone 4, они не будут доступны для предыдущих версий. - person Kavet Kerek; 07.06.2010
comment
это имело бы смысл. Предыдущие версии не могли справиться с этим, и было бы глупо причинять вред этим слабым, устаревшим устройствам с графикой в ​​высоком разрешении, которые им приходится масштабировать. - person dontWatchMyProfile; 07.06.2010
comment
Если вам нужно связать двоичный файл со всей дополнительной графикой, это все еще хуже. 1 МБ png превратится в 5 МБ png. - person RickiG; 09.06.2010

Все ваши метки и системные кнопки будут иметь разрешение 326dpi, но ваши изображения будут по-прежнему удваиваться в пикселях, пока вы не добавите ресурсы высокого разрешения. В настоящее время я обновляю свои приложения. Если вы собираете и запускаете iPhone 4 sim, тогда он отображается на 50%, перейдите в «Окно»> «Масштаб»> «100%», чтобы увидеть реальную разницу! Этикетки гладкие, мои изображения выглядят шокирующе!

person Community    schedule 13.06.2010