Проверьте, поддерживает ли iPad функцию многозадачности в iOS 9 - программно
Для iPad Air 2 или iPad mini 4 мы можем использовать все три различных функции многозадачности (режим "Раздельный просмотр", "Скольжение" и "Картинка в картинке"). Для iPad Air, iPad mini 2 или iPad mini 3 мы можем использовать режим "Скольжение" и "Картинка в картинке". Есть ли способ, которым мы можем обнаружить эти устройства из кода? Как сказать, используя respondsToSelector:someMultitaskingmethod
?
1 ответ
Совместимость устройства
Если вы действительно хотите убедиться, что ваше устройство обладает определенной совместимостью, вы можете проверить настройки в списке совместимости устройств. Это покажет ряд ключей, которые вы можете добавить к списку приложений, что еще больше ограничит его для устройств, поддерживающих требуемые функции. Я думаю, что наряду с проверкой доступных классов, упомянутых ниже, я бы обеспечил хорошую матрицу того, чего вы хотите достичь.
Краткий обзор видео WWDC, посвященный функциям, которые вы хотите поддерживать, показывает, что вам нужно будет проверить наличие iPad Air, iPad Air2, iPad mini 2 и 3. Размеры экрана можно посмотреть в сочетании с идиомами и доступность класса, чтобы обеспечить таргетинг только на те устройства, которые вы хотите. IOSRES имеет хорошую матрицу этих размеров экрана ~ доступ к UIScreen.mainScreen()
,
Другой вариант заключается в проверке использования TraitCollection для определения правильных моделей / возможностей устройства. К ним относятся такие свойства, как displayScale и forceTouchCapability. Можно даже создать собственную коллекцию признаков для дальнейшего описания уникальной среды.
Основной подход
Проверка одних только устройств, вероятно, не то, что вы хотите сделать. Вместо этого вам следует проверить возможности, доступные на платформе iOS, и некоторую комбинацию из коллекции идиом и характеристик устройства. Затем вы можете сравнить, доступен ли метод, используя ответы на селектор.
Проверьте обновленные SDK или фреймворки для получения дополнительной информации об изображении на картинке (в основном новые методы выполняют всю работу и сообщают вам, будет ли устройство поддерживать эту функцию). Еще один предшествующий запуск методов - определить, можете ли вы создавать новые классы.
Вы также можете исследовать варианты проверки конкретного оборудования на платформе. Смотрите этот пример от Apple.
Если вы знаете, что целевые функции доступны на определенных уровнях платформы, вы можете проверить номер версии операционной системы ( пример Apple).
+ (BOOL)isURLLoadingAvailable
{
return (NSFoundationVersionNumber >= 462.6);
}
В этой статье подробно описывается, как поддерживать несколько ОС и устройств.
Пример тестирования для доступного класса:
if ([AVPictureInPictureController class]) {
//Safe to use AVPictureInPictureController
} else {
//Fail gracefully
}
Пример тестирования доступного метода:
if ([self.image respondsToSelector:@selector(resizableImageWithCapInsets:resizingMode:)]) {
//Safe to use this way of creating resizable images
} else {
//Fail gracefully
}
Принятие многозадачности, разделение и скольжение
Apple подробно описывает, как принять новое поведение. Это требует настройки списков и других требований, помимо проверки классов и других программных методов, описанных выше. Есть хороший пример того, как использовать Slide Over и Split View, загрузить пример проекта кода Lister (для watchOS, iOS и OS X). Для примера "картинка в картинке" посмотрите на AVFoundationPiPPlayer. Образец AdaptivePhotos включает в себя многозадачность с iPad.