检查 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 进行多任务处理。
对于 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 进行多任务处理。