Работа с размером экрана iPad Mini

Новый iPad Mini имеет размер экрана 7,9 дюйма. Есть ли на нем сетчатка? Будет ли он автоматически масштабировать существующие xib-файлы и раскадровки, или нам придется создавать по две версии каждого?

Будем ли мы справляться с этим так же, как с iPhone 5?

Как мне создать определение или условие, чтобы узнать, работает ли на устройстве iPad Mini?


person MCKapur    schedule 23.10.2012    source источник
comment
Гм, принятый ответ не отвечает на вторую часть вашего вопроса.   -  person Dan Rosenstark    schedule 24.10.2012
comment
Хорошо сделано. Я признаю, что это преждевременный вопрос.   -  person Dan Rosenstark    schedule 24.10.2012
comment
ПРИМЕЧАНИЕ: идентификация моделей проблематична; не знаю, какие будущие модели могут существовать. iPad mini совместим с большинством iPhone; заявленные границы и масштаб близки к реальным размерам устройства, если считать, что границы указаны в исходных единицах iPhone 1/160. Это ДРУГИЕ iPad, которые не соответствуют первоначальным размерам Apple для точки - они увеличивают изображение на ~ 20% по сравнению с указанными границами и масштабом. (границы указаны в единицах 1/132, а не 1/160). Теперь, когда существует iPad mini, одна из стратегий - спроектировать для него и просто позволить другим iPad показать все, что на 20% больше.   -  person ToolmakerSteve    schedule 12.12.2015


Ответы (9)


Если ваше приложение работает на iPad 1 или iPad 2, оно будет работать как есть на новом iPad mini. На mini нет дисплея Retina. С точки зрения приложения он идентичен iPad 2.

Изменить: спросили, как определить, когда приложение работает на iPad mini. Для этого нет проверки API. Размер экрана не помогает. UI_USER_INTERFACE_IDIOM() не помогает. Пока он у кого-то не появится, невозможно узнать, отличается ли UIScreenMode pixelAspectRatio (вероятно, он такой же, как у iPad 2).

Это оставляет только одну возможность - получить machine от uname() и жестко запрограммировать проверку этого значения. Это никогда не желаемый подход. И на момент написания этой статьи мы не знаем, какой будет ценность. Возможно, iPad5, x при условии, что iPad 4-го поколения - это iPad4, x.

Изменить: до сих пор я видел отчет о том, что iPad mini возвращает iPad2,5 (да, это две запятые пять), а также iPad2,6 и iPad2,7 для имени машины.

person rmaddy    schedule 23.10.2012
comment
Как это работает? Я знаю, что с Apple все просто работает, но как уменьшить размер приложения? Использует ли iOS автоматический макет для перемещения всего? - person Sam Spencer; 24.10.2012
comment
Здесь нет никакой магии. IPad mini имеет размер экрана 1024x768, идентичный первым двум iPad. Пиксели физически меньше из-за того, что физически меньше экран, но такое же количество пикселей. - person rmaddy; 24.10.2012
comment
@Yar Обновлено одним отчетом об имени машины iPad mini. - person rmaddy; 04.11.2012

Приложения будут работать нормально. Но если у вас есть очень маленькие элементы пользовательского интерфейса. возможно, вы захотите вернуться к ним из-за уменьшения размера экрана.

person Uday Kiran Nelluri    schedule 23.10.2012
comment
нет уменьшения размера пикселя, поэтому пересмотр небольших элементов пользовательского интерфейса - не лучший вариант. - person ColdLogic; 24.10.2012
comment
Я не понимаю, почему люди голосуют против этого. Это должно быть правильно. Чем меньше экран, тем меньше физические размеры элемента пользовательского интерфейса. Пикселей на дюйм составляет 163, в отличие от 132 для iPad 2. Таким образом, элемент пользовательского интерфейса размером (скажем) 30 на 30 пикселей будет иметь квадрат 0,227 дюйма на iPad 2, но только 0,184 дюйма на iPad mini. Вполне разумно предположить, что эта разница приведет к снижению удобства использования приложения на iPad mini. - person William Jockusch; 24.10.2012
comment
Это верно. Элементы будут меньше, чем на оригинальном iPad, даже при тех же размерах пикселей. Проголосовали. - person nielsbot; 24.10.2012
comment
@ColdLogic на самом деле уменьшение размера пикселей по сравнению с iPad и iPad, но увеличение по сравнению с iPad 3. Однако в iOS мы редко (никогда) говорим о пикселях, а скорее о точках, что не является проблемой. Проблема в том, что маленькие элементы пользовательского интерфейса будут казаться меньше на этом новом, меньшем экране. +1 - person Dan Rosenstark; 24.10.2012
comment
@Yar Я скучаю по моему предыдущему заявлению. Уменьшается размер пикселя, но не разрешение пикселя. Это правда, что экран меньше, и что любой элемент пользовательского интерфейса будет ПОКАЗАТЬСЯ меньше. Однако разрешение осталось прежним. Изображения не будут выглядеть менее или более резкими из-за уменьшения размера экрана. Если вы чувствуете, что ваши элементы недостаточно велики, это не из-за мини-экрана ipad, а из-за большей проблемы с пользовательским интерфейсом, следовательно, причиной отрицательных голосов. - person ColdLogic; 24.10.2012
comment
@ColdLogic резкость? ‹Facepalm› - person Dan Rosenstark; 25.10.2012
comment
@ Я думаю, я / facepalm твоя ‹facepalm›, раз уж ты хочешь пойти в незрелом направлении. - person ColdLogic; 26.10.2012
comment
Я голосую за это. Кнопки на экране будут физически меньше, а пальцы пользователя - нет. Текст также станет меньше физически, но зрение пользователя останется прежним. У меня уже есть клиенты, которые просят у iPad mini другой дизайн, чем у полноразмерных iPad. Буквально сегодня, когда FedEx пришла в офис iPad mini, Apple выпустила новую версию Xcode, которая включала поддержку iPad mini. Я не понял, что именно это означает, но, надеюсь, в нем есть способ отличить мини-планшет от iPad стандартного размера программно. - person Daniel T.; 03.11.2012
comment
@DanielT. Поддержка iPad mini, добавленная в Xcode, предназначена только для того, чтобы позволить Организатору отображать подробности об iPad mini. API нет. Нет iPad mini Simulator. Это обсуждалось на форумах разработчиков Apple iOS несколько дней назад. - person rmaddy; 11.11.2012
comment
Если вы следовали рекомендациям Apple и ограничили размер кнопок минимум 44x44 точками, проблем не возникнет. У iPhone / iPod без сетчатки есть тот же PPI, что и у iPad mini (163 PPI), поэтому норма 44x44 практически безопасна для всех устройств. - person Mike Weller; 14.11.2012
comment
@ColdLogic - ваши рассуждения неверны. Если у человека не идеальное зрение, элемент пользовательского интерфейса с таким же разрешением (количеством пикселей) на меньшем экране действительно может быть слишком маленьким. Вот почему у Apple есть понятие точек и масштаба экрана: иначе ВСЕ было бы слишком крошечным, чтобы увидеть его на дисплее сетчатки (если бы оно отображалось с тем же количеством пикселей). Обычно ЕСТЬ желательно изменить количество пикселей при изменении плотности пикселей. - person ToolmakerSteve; 11.12.2015

Создавайте приложения для iPad 2 с разрешением. Новый iPad Mini не поддерживает сетчатку с разрешением 1024x768, что означает, что приложения, которые уже работали на iPad 1 или iPad 2, автоматически работают на iPad Mini.

person Beltalowda    schedule 23.10.2012

Я думаю, что Фил Шиллер (старший вице-президент Apple) сказал это лучше всего на мероприятии для прессы презентация iPad Mini (примерно 53:00 до выступления)

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

Затем он продолжает:

... А пиксели запомнить еще проще, потому что они абсолютно одинаковые. Оригинальный iPad и iPad 2 имеют разрешение 1024 на 768 пикселей, а новый iPad Mini - 1024 на 768 пикселей. Это означает, что все программное обеспечение, созданное для iPad, работает на iPad Mini без изменений.

Итак, чтобы подвести итог и ответить на ваш вопрос, нет, у iPad Mini нет дисплея Retina, и вам не нужно выполнять какую-либо дополнительную работу. IPad Mini будет использовать раскадровку или xib, которые вы уже создали для iPad.

Что касается обнаружения, я пока не могу найти ничего, чтобы доказать это (потому что они еще не выпущены), но я готов поспорить, что следующее будет выводить «iPad Mini».

NSLog(@"%@",[[UIDevice currentDevice] model]);

РЕДАКТИРОВАТЬ:

NSLog(@"\nMachine ID: %@\nModel: %@\nLocalized Model: %@",machineName(),[[UIDevice currentDevice] model],[[UIDevice currentDevice] localizedModel]);

NSString *machineName()
{

    struct utsname systemInfo;
    uname(&systemInfo);

    return [NSString stringWithCString:systemInfo.machine
                              encoding:NSUTF8StringEncoding];
}

На моем iPad Mini 16 ГБ (только Wi-Fi) это возвращает:

Идентификатор компьютера: iPad2,5
Модель: iPad
Локализованная модель: iPad

person Mick MacCallum    schedule 25.10.2012
comment
@JeffKelley Забавно, проверка, что это было первым делом в моем списке дел, сегодня, когда я приеду! - person Mick MacCallum; 02.11.2012
comment
Отличный ответ +1. Это самая глупая вещь на свете. А пиксели запомнить еще проще, потому что они абсолютно одинаковые, поскольку, как разработчики, мы используем точки, а не пиксели, которые ДОЛЖНЫ быть разными, поскольку у него меньший экран. Я вообще не понимаю этого решения. - person Dan Rosenstark; 04.11.2012
comment
@JeffKelley, что ты имеешь в виду, говоря, что нет выходов для Ipad? Выводит iPad2,5 для machineId или нет? - person AlexWien; 31.03.2013
comment
Результатом [[UIDevice currentDevice] model] будет «iPad». - person Jeff Kelley; 01.04.2013

Если iPad Mini и iPad без сетчатки будут иметь одинаковый размер экрана независимо от того, не могли бы вы использовать что-то вроде того, что используется, чтобы определить, является ли экран устройства iPhone 5 или iPhone 4:

#define IS_WIDESCREEN5 ( [ [ UIScreen mainScreen ] bounds ].size.height == 568 )
#define IS_WIDESCREEN4 ( [ [ UIScreen mainScreen ] bounds ].size.height == 480 )

Итак, для iPad Mini и iPad без Retina выполните следующие действия:

#define IS_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 512 )

а для iPad с сетчаткой сделайте:

#define IS_RETINA_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 1024 )

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

Надеюсь, это поможет со второй частью вашего вопроса. Удачи :)

person johnnelm9r    schedule 11.05.2013
comment
Или вы можете использовать предоставленный Apple способ сделать это: CGFloat screenScale = [[UIScreen mainScreen] scale]; Которая возвращает 1.0 для non-retina, 2.0 для retina и работает на всех устройствах iOS, а не только iPad. И будет полезен для любых будущих устройств. - person ToolmakerSteve; 11.12.2015

Тебе не нужно делать ничего другого. Он должен работать автоматически, как указано в Apple. Разрешение все еще такое же, как у iPad.

person iDev    schedule 23.10.2012

iPad mini использует то же разрешение, что и iPad без Retina, iOS будет использовать графику 1x. Перейдите по этой ссылке ... ссылка

person Sanjeev sharma    schedule 01.02.2013

Изображения для ipad mini будут такими же, как для ipad 1 и 2. Но рекомендуется использовать изображения @ 2x и для экрана Retina. Потому что, как только ваше приложение появится в магазине приложений, вы не сможете помешать людям загрузить его на ipad с дисплеем Retina.

Итак, на данный момент вам нужно будет создавать изображения как для сетчатки, так и без нее.

Программно отдельные файлы xib НЕ требуются для дисплея Retina на ipad. Просто сохраните [email protected] для всех изображений.

person CalZone    schedule 22.02.2013

Для обнаружения iPad Mini (любой модели) я использую этот код (протестирован на iOS 10.x):

- (BOOL)isIPadMini {
   return [[UIDevice currentDevice].name hasPrefix:@"iPad Mini"];
}
person Slyv    schedule 21.02.2017