Приложение, запущенное на iPhone 4, имеет разрешение 320×480 вместо 640×960

#iphone #uiwindow #screen-resolution

#iPhone #uiwindow #разрешение экрана

Вопрос:

Я создаю приложение для iPhone, которое будет работать на iPhone 3 и iPhone 4.

До этого момента я пытался настроить изображения в соответствии с разрешением, но оказывается, что даже при запуске на iPhone 4 размер моего окна составляет 320×480.

В XIB я указал «полноэкранный режим при запуске», а для ViewController я даже указал «Хочет полноэкранный режим», но я никогда не могу заставить его распознавать фактическое разрешение.

Я что-то упускаю?

Ответ №1:

Работает ли оно в полноэкранном режиме на вашем iPhone 4? (Я не имею в виду, о каком разрешении сообщается, я имею в виду, есть ли черные полосы вокруг приложения — бьюсь об заклад, что их нет).

iOS «волшебна» тем, что вы просто работаете с параметрами размера iPhone 3, то есть xibs и т.д., И она корректно масштабирует их для вас на iPhone 4. Вы всегда будете видеть меньшее разрешение при запросе дисплея.

Чтобы заставить изображения загружаться в правильном разрешении, просто создайте две версии, т. е.

myImage.png myImage@2x.png

Сделайте второе окно ровно в два раза больше первого, и iPhone сделает все остальное.


PS В UIImageView добавлено свойство под названием scale — именно так iPhone определяет размер изображения для рендеринга — посмотрите документы здесь.

Комментарии:

1. Я вижу. Таким образом, мои исходные изображения уже имеют размер 2x, хотя они и не названы таким образом. На самом деле я применяю коэффициент уменьшения при вставке изображений. Проблема в том, что я хотел бы сохранить текущий вид в сохраненных фотографиях, но когда я это делаю, сохраняется изображение размером 320×480 вместо изображения полного качества.

2. Это странно — я бы ожидал, что оно сохранится с правильным разрешением. У меня нет опыта сохранения фотографий, но я бы опубликовал еще один вопрос (включая код, который вы используете) в stack overflow — возможно, есть кто-то еще, кто может помочь!

3. @Andre — Используете ли вы UIGraphicsBeginImageContext() при создании снимка? На дисплее Retina вы захотите использовать UIGraphicsBeginImageContextWithOptions() и установить масштабный коэффициент равным 0.0, чтобы подобрать масштабный коэффициент дисплея. Это должно создать растровое изображение, соответствующее разрешению экрана окна вашего приложения.

4. @Брэд, да! Позвольте мне попробовать это сейчас 🙂