Sunday, March 2, 2014

Поддержка iPhone5

http://iosronin.com/2012/11/%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0-iphone5/

Поддержка iPhone5

Ноябрь 18th, 2012  Anatoly

С выходом iPhone5 стала задача поддержки в приложении разных разрешений экрана. iPhone5 получил крупный 4-дюймовый экран с разрешением 1136*640 пикселей. Таким образом, формат изображения стал 16:9, тогда как раньше он был 3:2.
iPhone5 требует новый набор инструкций ARMv7S. Генерацию данного набора инструкций поддерживает xCode4.5 и выше. Кроме того, xCode4.5 больше не поддерживает архитектуру ARMv6 (iPhone 3G и более старых устройств).
Чтобы сделать поддержку iPhone5 нужно открыть проект в xCode4.5. Он автоматически предложит добавить изображение загрузки (lauch image) (Default-568@2x.png).

Теперь приложение будет запускаться в полноэкранном режиме на iPhone5 без добавления черных полос сверху и снизу.

Однако и этого может быть недостаточно для правильного масштабирования. Необходимо убедится, что представление (view) внутри xib файлов автоматически масштабируются по высоте родительского представления (super view).


При использовании Cocoa Auto Layout, этот шаг становится необязательным. Однако Auto Layout не поддерживается на iOS 5.

И все же иногда наступает момент, когда без кода не обойтись. Основная задача состоит в том, чтобы определить запущено ли приложение на iPhone 5 (или симуляторе iPhone 5) или нет.

Вариантов определения тут может быть несколько:

по размеру экрана
по модели девайса (iphone5,1)
по размеру оперативной памяти
по характеристикам процессора

Естественно, первый вариант наиболее простой, т.к. будет работать как на самом девайсе, так и на симуляторе.  Причем это можно сделать одной строкой.

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height — ( double )568 ) < DBL_EPSILON )

Впоследствии, IS_IPHONE_5 мы сможем использовать, например, так:

if (IS_IPHONE_5){
//это запущено на экране в 4 дюйма!
}
else{
//экран размером не 4 дюйма
}

Вот основные моменты о которых я хотел рассказать.

No comments:

Post a Comment