Closed2

【Swift】UIImagePickerController 0->1

yoshitakayoshitaka

さっそくこっち使えって?

class PHPickerViewController : UIViewController

フォトライブラリからアセットを選択するためのユーザーインターフェイスを提供するビューコントローラー。

概要概要
PHPickerViewControllerクラスは、UIImagePickerControllerの代替です。 PHPickerViewControllerは安定性と信頼性を向上させ、開発者とユーザーにとって次のようないくつかの利点があります。

  • 遅延イメージのロードとリカバリのUI
  • RAW画像やパノラマ画像などの大規模で複雑なアセットの信頼性の高い処理
  • UIImagePickerControllerで使用できないユーザーが選択可能なアセット
  • ライブ写真のみを表示するピッカーの構成
    ライブラリにアクセスしないPHLivePhotoオブジェクトの可用性
  • 無効な入力に対するより厳密な検証
  • ピッカーオブジェクトを提示できるのは1回だけです。 セッション間で再利用することはできません。

重要

PHPickerViewControllerのビュー階層はプライベートであり、パブリックAPIを介してアクセスできないため、サブクラス化することはできません。

yoshitakayoshitaka

UIImagePickerController

写真の撮影、映画の録画、およびユーザーのメディアライブラリからのアイテムの選択のためのシステムインターフェイスを管理するビューコントローラ。

@MainActor class UIImagePickerController : UINavigationController

概要概要
イメージピッカーコントローラーは、ユーザーインタラクションを管理し、それらのインタラクションの結果をデリゲートオブジェクトに配信します。イメージピッカーコントローラーの役割と外観は、提示する前に割り当てるソースタイプによって異なります。

UIImagePickerController.SourceType.cameraのsourceTypeは、(メディアキャプチャをサポートするデバイスで)新しい写真またはムービーを撮影するためのユーザーインターフェイスを提供します。

UIImagePickerController.SourceType.photoLibraryまたはUIImagePickerController.SourceType.savedPhotosAlbumのsourceTypeは、保存された写真やムービーから選択するためのユーザーインターフェイスを提供します。

デフォルトのコントロールを含むイメージピッカーコントローラーを使用するには、次の手順を実行します。

  • デバイスが目的のソースからコンテンツを選択できることを確認します。これを行うには、isSourceTypeAvailable(_ :)クラスメソッドを呼び出し、UIImagePickerController.SourceType列挙から定数を提供します。
  • availableMediaTypes(for :)クラスメソッドを呼び出して、使用しているソースタイプで使用可能なメディアタイプを確認します。これにより、ビデオ録画に使用できるカメラと静止画像にのみ使用できるカメラを区別できます。
  • mediaTypesプロパティを設定して、使用可能にするメディアタイプ(静止画像、動画、またはその両方)に応じてUIを調整するようにイメージピッカーコントローラーに指示します。
  • ユーザーインターフェイスを提示します。 iPhoneまたはiPodtouchで、現在アクティブなView Controllerのpresent(_:animated:completion :)メソッドを呼び出し、構成済みのイメージピッカーコントローラーを新しいView Controllerとして渡すことにより、これをモーダル(フルスクリーン)で実行します。
  • iPadでは、次の表に要約されているように、画像ピッカーを表示する正しい方法はそのソースタイプによって異なります。

カメラ/フォトライブラリ/保存した写真アルバム
フルスクリーン/ポップオーバー/ポップオーバー

この表は、iPadでUIImagePickerController.SourceType.photoLibraryまたはUIImagePickerController.SourceType.savedPhotosAlbumのソースタイプを指定する場合、ポップオーバーコントローラーを使用してイメージピッカーを提示する必要があることを示しています(これを行う方法については、UIPopoverPresentationControllerを参照してください)。保存された画像や動画から選択するために画像ピッカーをモ​​ーダル(フルスクリーン)で表示しようとすると、システムで例外が発生します。

iPadでは、UIImagePickerController.SourceType.cameraのソースタイプを指定すると、イメージピッカーをモ​​ーダル(フルスクリーン)またはポップオーバーを使用して表示できます。ただし、Appleは、カメラインターフェイスをフルスクリーンでのみ表示することをお勧めします。

ユーザーがボタンをタップして、新しくキャプチャまたは保存された画像またはムービーを選択するか、操作をキャンセルする場合は、デリゲートオブジェクトを使用して画像ピッカーを閉じます。新しくキャプチャされたメディアの場合、デリゲートはそれをデバイスのカメラロールに保存できます。以前に保存したメディアの場合、代理人はアプリの目的に応じて画像データを使用できます。

これらの手順の詳細については、写真や動画の撮影を参照してください。

イメージピッカーコントローラーをカスタマイズして、ユーザーの操作を自分で管理できます。これを行うには、表示するコントロールを含むオーバーレイビューを提供し、静止画像または動画のキャプチャで説明されている方法を使用します。デフォルトのコントロールに加えて、またはその代わりに、カスタムオーバーレイビューを表示できます。 UIImagePickerControllerクラスのカスタムオーバーレイビューは、iOS3.1以降でcameraOverlayViewプロパティを介して使用できます。コード例については、Image PickerControllerサンプルコードプロジェクトのカスタマイズを参照してください。

重要

UIImagePickerControllerクラスは、ポートレートモードのみをサポートします。このクラスはそのまま使用することを目的としており、サブクラス化はサポートしていません。このクラスのビュー階層はプライベートであり、1つの例外を除いて変更してはなりません。カスタムビューをcameraOverlayViewプロパティに割り当て、そのビューを使用して追加情報を表示したり、カメラインターフェイスとコード間の相互作用を管理したりできます。

デリゲートオブジェクトの提供

イメージピッカーコントローラーを使用するには、UIImagePickerControllerDelegateプロトコルに準拠するデリゲートを提供する必要があります。 iOS 4.1以降、デリゲートを使用して、静止画像のメタデータを画像と一緒にカメラロールに保存できます。 UIImagePickerControllerDelegateを参照してください。

フラッシュモードの調整

iOS 4.0以降では、ユーザーがフラッシュモードを調整したり(フラッシュLEDを備えたデバイスの場合)、使用するカメラを選択したり(前面カメラと背面カメラを備えたデバイスの場合)、静止画像を切り替えたりするためのカスタムコントロールを提供できます。と映画のキャプチャ。これらの設定をプログラムで管理することもできます。フラッシュを直接操作して、ストロボライトなどの効果を出すこともできます。ビデオキャプチャモードを使用するように設定されたピッカーインターフェイスを提示します。次に、cameraFlashModeプロパティをUIImagePickerController.CameraFlashMode.onまたはUIImagePickerController.CameraFlashMode.offに設定して、フラッシュLEDをオンまたはオフにします。

映画の操作

ムービーキャプチャのデフォルトの継続時間制限は10分ですが、videoMaximumDurationプロパティを使用して調整できます。ユーザーが共有をタップしたがMMS、YouTube、または別の宛先に映画を送信するために、適切な期間制限と適切なビデオ品質が適用されます。

デフォルトのカメラインターフェースは、以前に保存されたムービーの編集をサポートします。編集には、ムービーの最初または最後からトリミングしてから、トリミングしたムービーを保存することが含まれます。新しいムービーの記録もサポートするインターフェイスではなく、ムービー編集専用のインターフェイスを表示するには、このインターフェイスの代わりにUIVideoEditorControllerクラスを使用します。 UIVideoEditorControllerを参照してください。

ライブ写真の操作

Live Photosは、サポートされているデバイスのカメラアプリ機能であり、写真を1つの瞬間だけでなく、キャプチャの直前と直後の瞬間の動きと音声を含めることができます。 PHLivePhotoオブジェクトはライブフォトを表し、PHLivePhotoViewクラスは、ライブフォトを表示してそのコンテンツを再生するためのシステム標準のインタラクティブなユーザーインターフェイスを提供します。

ライブ写真には音と動きが含まれていますが、写真のままです。イメージピッカーコントローラーを使用して静止画像をキャプチャまたは選択すると(mediaTypes配列にkUTTypeImageタイプのみを含めることにより)、ライブフォトとしてキャプチャされたアセットが引き続きピッカーに表示されます。ただし、ユーザーがアセットを選択すると、デリゲートオブジェクトは、ライブ写真の静止画像表現を含むUIImageオブジェクトのみを受け取ります。

ユーザーがイメージピッカーでライブ写真を選択したときに完全なモーションとサウンドのコンテンツを取得するには、mediaTypes配列にkUTTypeImageタイプとkUTTypeLivePhotoタイプの両方を含める必要があります。詳細については、UIImagePickerControllerDelegateのlivePhotoを参照してください。

完全にカスタマイズされたメディアのキャプチャとブラウジング

完全にカスタマイズされた画像またはムービーのキャプチャを実行するには、代わりに、静止画およびビデオメディアのキャプチャで説明されているAVFoundationフレームワークを使用します。 AVFoundationフレームワークを使用したカメラアクセスは、iOS4.0以降で利用できます。

写真ライブラリを閲覧するための完全にカスタマイズされた画像ピッカーを作成するには、Photosフレームワークのクラスを使用します。たとえば、iOSによって生成およびキャッシュされた大きなサムネイル画像を表示したり、タイムスタンプや位置情報などの画像メタデータを利用したり、MapKitやiCloud写真共有などの他の機能と統合したりするカスタム画像ピッカーを作成できます。詳細については、写真を参照してください。写真フレームワークを使用したメディアブラウジングは、iOS8.0以降で利用できます。

このスクラップは2021/07/16にクローズされました