Недавно я проснулся, поняв, что у нас, разработчиков iOS, теперь есть небольшой парк устройств с разными размерами и разрешениями экрана. В этой таблице показаны характеристики экрана развернутых в настоящее время устройств iOS:
http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density
Очень кстати. Теперь вот загадка:
Я создаю простое представление Open GL на своем iPad2. Мой код создает окно просмотра OpenGL с обычными размерами пикселей iPhone/Pad (320x480, 768x1024). Я рисую белый прямоугольник в этой штуке. Я делаю его шириной 200px. Мило. Старый добрый iPad.
Я компилирую тот же код (который автоматически определяет размеры экрана) в свой iPhone4. Мой белый прямоугольник не такой ширины, как на планшете. Справедливо. Я знаю, что реальные размеры в пикселях у iPhone4 — 640x960, а у iPad — 768x1024 с учетом ppi каждого устройства.
Разделив 768/640, я получаю хороший коэффициент масштабирования 1,2, который затем умножаю на 200 для ширины моего тестового прямоугольника и перекомпилирую для iPhone4... А-а-а... это почти работает. Ширина прямоугольника всего на несколько пикселей меньше, чем у его аналога на iPad.
Кто-нибудь может указать на ошибку в моих рассуждениях? Я хочу иметь возможность пометить отображаемый объект как «независимый от экрана», чтобы сохранить его физические размеры между iThings. Пишите один раз бегите куда угодно. Да правильно.
Я создаю игру, и, конечно же, этот чертовски замечательный iPad3 имеет новое разрешение. Я пытаюсь абстрагироваться от как можно большего количества возможных ловушек разрешения. Вероятно, у меня не будет возможности протестировать свое приложение на iPad3 до его выпуска. Кто-нибудь еще в этой же лодке?