iPad Air 2 または iPad mini 4 の場合、3 つの異なるマルチタスク機能 (Split View、Slide over、Picture in Picture) をすべて使用できます。iPad Air、iPad mini 2、または iPad mini 3 では、Slide Over と Picture in Picture を使用できます。これらのデバイスをコードから検出する方法はありますか? 言うように、respondsToSelector:someMultitaskingmethod
?
1 に答える
デバイスの互換性
デバイスに特定の互換性があることを本当に確認したい場合は、デバイス互換性リストで設定を調べることができます。これにより、アプリの plist に追加できる多くのキーが明らかになり、必要な機能をサポートするデバイスにさらに制限されます。以下で説明する利用可能なクラスを確認することと合わせて、達成したいことの良いマトリックスを提供すると思います。
サポートしたい機能をカバーするWWDC ビデオを簡単に確認すると、iPad Air、iPad Air2、iPad mini 2 および 3 を確認する必要があることがわかります。イディオムと組み合わせて画面サイズを確認できます。クラスの可用性を確認して、必要なデバイスのみをターゲットにするようにします。IOSRESには、これらの画面サイズの適切なマトリックスがあります ~ によってアクセスされUIScreen.mainScreen()
ます。
もう 1 つのオプションは、適切なデバイス モデル/機能を識別するためにTraitCollectionを使用して調べることです。これらには、displayScale や forceTouchCapability などのプロパティが含まれます。独自の特性コレクションを構築して、独自の環境をさらに説明することもできます。
基本的な考え方
デバイスを単独でチェックすることは、おそらくやりたいことではありません。代わりに、iOS プラットフォームで利用可能な機能と、デバイスのイディオム/特性コレクションの組み合わせを確認する必要があります。次に、responds to selector を使用してメソッドが使用可能かどうかを比較できます。
ピクチャ イン ピクチャの詳細については、更新されたSDKまたはフレームワークを確認してください (基本的に、新しいメソッドはすべての作業を行い、デバイスが機能をサポートするかどうかを示します)。メソッドを実行するもう 1 つの前段階は、新しいクラスをインスタンス化できるかどうかを判断することです。
プラットフォーム内の特定のハードウェアを調べるためのオプションを調べることもできます。Apple のこの例を参照してください。
対象とする機能が特定のプラットフォーム レベルで利用できることがわかっている場合は、オペレーティング システムのバージョン番号をテストできます ( Apple の例)。
+ (BOOL)isURLLoadingAvailable
{
return (NSFoundationVersionNumber >= 462.6);
}
この記事では、複数の OS とデバイスをサポートする方法について詳しく説明します。
利用可能なクラスのテストの例:
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 (watchOS、iOS、および OS X 用) サンプル コード プロジェクトをダウンロードします。Picture-In-Picture のサンプルについては、AVFoundationPiPPlayerを参照してください。AdaptivePhotosサンプルには、iPad でのマルチタスクが含まれています。