Работа с экраном мини-экрана 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"];
}