Tag: «retina»
Как узнать ретина дисплей или нет?
Ко мне в блог много заходов из поисковиков по запросам вроде "Как определить дисплей retina". Попадают они ко мне на статью про Objective-C, но ищут они явно не код :) Запили в итоге такую вот страничку, на которую надо просто зайти через браузер с вашего iOS-устройства. Если ретина - результат будет залёным, как на скрине выше. Если не ретина - то красный, как на скрине ниже.
Работает для iOS-устройств (iPhone, iPad, iPod) и MacBook Pro Retina. На экранах с высокой плотностью пикселей на дюйм тоже пишет, что retina :)
Адрес страницы: http://arm1.ru/retina/
comment commentsКак определить Retina Display на iPad/iPhone
Внимание! Если вам нужно просто понять, какой экран у вас на вашем iPad, iPhone или iPod - просто перейдите по ссылке: https://arm1.ru/retina/
Пытаясь понять, как мне на Objective-C определить наличие Retina-экрана в устройстве, пришлось погуглить. Нашёл такое решение, которое запишу для шпаргалки.
Получаем размеры экрана:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
Возвращает размер экрана, обычно 320x480, даже на iPhone 4, iPhone 4S и iPod Touch вернёт 320x480 (иначе вроде как старые приложения падают). Для iPad возвращает 768x1024 - и на iPad/iPad 2, и на новом iPad с Retina Display.
Получаем масштаб экрана:
CGFloat screenScale = [[UIScreen mainScreen] scale];
Для всех НЕ-retina-экранов вернёт 1.0f. Для Retina-экранов вернёт 2.0f. Касается всех iOS-девайсов.
Посему - имея размеры экрана, характерные для форм-фактора (телефон/айпод или планшет) и зная масштаб - мы можем высчитать настоящий размер экрана девайса:
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
Если выполнить такой код:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
NSLog(@"%f x %f", screenBounds.size.width, screenBounds.size.height);
CGFloat screenScale = [[UIScreen mainScreen] scale];
NSLog(@"%f", screenScale);
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
NSLog(@"%f x %f", screenSize.width, screenSize.height);
то мы увидим в консоли все размеры. В данном случае - запускал на эмуляторе iPad Retina:
Ну и, собственно, проверяя размеры/тип устройства можно подставлять нужную графику нужных размеров. Profit.
P.S. что касается картинок, то нужно создать всего 2 картинки, например "image.png" и такую же картинку в 2 раза больше с именем "image@2x.png", и дальше пользоваться только первой. Например:
[UIImage imageNamed:@"image.png"];
Если на устройстве Retina - то приложние автоматически подхватит файл с большим разрешением (image@2x.png).
comment comments