Работа с экраном мини-экрана iPad

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

С этим мы справляемся, как и с iPhone 5?

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

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

Я думаю, что Фил Шиллер (старший вице-президент 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, которые вы уже создали для iPads.

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

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

EDIT:

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];
}

На моем 16GB iPad Mini (только Wifi) это возвращает:

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

Ответ 5

Если 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, выполните:

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

и для сетчатки iPad делать:

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

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

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

Ответ 6

Вам не нужно ничего делать. Он должен автоматически работать, как упомянуто яблоком. Разрешение по-прежнему такое же, как у iPad.

Ответ 7

iPad mini использует такое же разрешение, что и iPads без сетчатки, iOS будет использовать графику 1x. См. Эту ссылку... ссылка

Ответ 8

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

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

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

Ответ 9

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

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