5

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

4

1 回答 1

6

设备兼容性

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

快速查看涵盖您想要支持的功能的WWDC 视频表明您需要检查 iPad Air、iPad Air2、iPad mini 2 和 3。您可以结合习语和类可用性,以确保您只针对您想要的设备。IOSRES具有这些屏幕尺寸的良好矩阵 ~ 由UIScreen.mainScreen().

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

基本方法

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

检查更新的SDK或框架以获取有关画中画的更多信息(基本上,新方法完成了所有工作,并告诉您设备是否支持该功能)。运行这些方法的另一个前提是确定您是否可以实例化新类。

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详细说明了如何采用新行为。这些需要设置 plist 和其他要求,超出检查类和上述其他编程技术。有一个很好的例子说明如何采用 Slide Over 和 Split View,下载Lister (for watchOS, iOS, and OS X) 示例代码项目。有关画中画示例,请查看AVFoundationPiPPlayer。AdaptivePhotos示例包括 iPad 的多任务处理。

于 2015-11-20T06:14:38.987 回答