检查 iPad 是否能够在 iOS 中执行多任务处理功能 9 - 以编程方式

Check if an iPad is capable of multitasking feature in iOS 9 - Programatically

对于 iPad Air 2 或 iPad mini 4,我们可以使用所有三种不同的多任务处理功能(拆分视图、滑过和画中画)。 对于 iPad Air、iPad mini 2 或 iPad mini 3,我们可以使用侧拉和画中画。有没有办法从代码中检测到这些设备?比如,使用 respondsToSelector:someMultitaskingmethod?

设备兼容性

如果您真的想确保您的设备具有特定的兼容性,您可以检查 Device Compatibility list 上的设置。这将显示一些键,您可以将这些键添加到您的应用程序的 plist 中,这将进一步限制它到支持所需功能的设备。连同检查下面提到的可用 classes,我认为将为您想要完成的事情提供一个很好的矩阵。

WWDC video covering the features you want to support indicate that you will need to check for the iPad Air, iPad Air2, iPad mini 2 and 3. You can take a look at the screen sizes in combination with the idioms and class availability to ensure that you target only the devices you want. IOSRES 的快速回顾有一个很好的这些屏幕尺寸矩阵 ~ 由 UIScreen.mainScreen() 访问。

另一种选择是使用 TraitCollection 检查以识别正确的设备 models/capabilities。其中包括 displayScale 和 forceTouchCapability 等属性。甚至可以构建自己的特征集来进一步描述一个独特的环境。

基本方法

单独检查设备可能不是您想要做的。相反,您应该检查 iOS 平台上可用的功能以及设备 idioms/traits 集合的某种组合。然后,您可以使用响应选择器比较该方法是否可用。

查看更新的 SDKs 或框架以获取有关画中画的更多信息(基本上新方法会完成所有的工作并告诉您设备是否支持该功能)。 运行 方法的另一个先决条件是确定您是否可以实例化新的 classes。

您还可以调查检查平台内特定硬件的选项。请参阅 Apple 的 this example

如果您知道您的目标功能在特定平台级别可用,您可以测试操作系统版本号 (Apple Example)。

+ (BOOL)isURLLoadingAvailable
{
    return (NSFoundationVersionNumber >= 462.6);
}

article 详细说明了如何支持多个 OS 和设备。

class 可用的测试示例:

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 details the specific介绍了如何采用新行为。这些需要设置 plist 和其他要求,超出检查 classes 和上述其他编程技术。 有一个很好的例子说明如何采用 Slide Over 和 Split View,下载 Lister (for watchOS, iOS, and OS X) sample code project. For a Picture-In-Picture sample look at the AVFoundationPiPPlayer.The AdaptivePhotos 示例包括使用 iPad 进行多任务处理。