对于iPad Air 2或iPad mini 4,我们可以使用所有三种不同的多任务功能(分割视图,幻灯片和画中画)。
对于iPad Air,iPad mini 2或iPad mini 3,我们可以使用Slide Over和Picture in Picture。有没有办法可以从代码中检测出这些设备?比方说,使用respondsToSelector:someMultitaskingmethod
?
答案 0 :(得分:6)
如果您确实要确保您的设备具有特定的兼容性,可以在Device Compatibility list上检查设置。这将显示您可以添加到应用程序的plist中的一些键,这些键将进一步限制为支持所需功能的设备。与检查下面提到的可用类一起,我认为将为您想要完成的任务提供一个很好的矩阵。
快速查看涵盖您要支持的功能的WWDC video表示您需要检查iPad Air,iPad Air2,iPad mini 2和3.您可以查看屏幕尺寸结合习语和类可用性,确保您只定位所需的设备。 IOSRES具有这些屏幕尺寸的良好矩阵〜由UIScreen.mainScreen()
访问。
另一个选择是使用TraitCollection检查以确定正确的设备型号/功能。其中包括displayScale和forceTouchCapability等属性。人们甚至可以构建自己的特质集合来进一步描述一个独特的环境。
单独检查设备可能不是您想要做的。相反,您应该检查iOS平台上可用的功能以及设备习语/特征集合的某些组合。然后,您可以使用响应选择器来比较该方法是否可用。
检查更新的SDKs或框架以获取有关画中画的更多信息(基本上,新方法可以完成所有的工作并告诉您设备是否支持该功能)。运行方法的另一个前提是确定是否可以实例化新类。
您还可以研究检查平台内特定硬件的选项。请参阅Apple的this example。
如果您知道要定位的功能在特定平台级别可用,则可以测试操作系统版本号(Apple Example)。
+ (BOOL)isURLLoadingAvailable
{
return (NSFoundationVersionNumber >= 462.6);
}
此article显示了如何非常详细地支持多个操作系统和设备。
测试可用课程的示例:
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和其他要求,以及检查上面的类和其他编程技术。 有一个很好的例子,说明如何采用Slide Over和Split View,下载Lister (for watchOS, iOS, and OS X) sample code project。有关画中画示例,请查看AVFoundationPiPPlayer。AdaptivePhotos示例包括使用iPad进行多任务处理。