iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

SwiftのUIViewにライブカメラのプレビューを表示する方法

Swiftで標準的なUIViewにライブカメラのプレビューを追加するには、iOS SDKのAVFoundationフレームワークを使う方法と、ネイティブのUIImagePickerControllerを使う方法の2つがあります。

本記事では、カメラプレビューをUIView上に表示することだけが目的なので、シンプルに実装できるUIImagePickerControllerを採用します。AVFoundationは、カメラに対して高度なカスタマイズや独自の操作を実装したい場合に適した選択肢です。逆に言えば、単純なプレビュー表示であればUIImagePickerControllerの方が手軽です。

カメラプレビューを表示するための手順

UIView上にカメラプレビューを表示するには、以下の手順を実行します。

  • UIImagePickerControllerのインスタンスを作成する
  • クラスをUIImagePickerControllerDelegateUINavigationControllerDelegateに準拠させる
  • 作成したインスタンスにデリゲートを設定する
  • 作成したインスタンスを子ViewControllerとして追加する
  • 子ViewControllerのviewを、自クラスのUIViewにサブビューとして追加する

実装コード

実際のコードは以下のようになります。

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib
    let imgPicker = UIImagePickerController()
    if UIImagePickerController.isCameraDeviceAvailable( UIImagePickerController.CameraDevice.front) {
        imgPicker.delegate = self
        imgPicker.sourceType = .camera

        addChild(imgPicker)
        self.view.addSubview(imgPicker.view)
        imgPicker.view.frame = self.view.bounds
        imgPicker.allowsEditing = false
        imgPicker.showsCameraControls = false
        imgPicker.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
   }
}

コードのポイント

この例では簡潔さを優先して、viewDidLoad()内で直接オブジェクトを作成していますが、実務ではlazy変数(遅延初期化プロパティ)を活用するのが良いプラクティスです。lazy変数を使えば、その変数が実際に必要になるまで初期化を遅らせることができ、不要なメモリ消費や処理を防げます。

また、showsCameraControls = falseを指定することで、標準のシャッターボタンなどのカメラUIが非表示になり、プレビュー画面だけをUIViewに埋め込むことができます。独自の撮影ボタンやUIを重ねたい場合に便利です。

注意点:シミュレータでは動作しない

このコードはデバイスのカメラを使用するため、iOSシミュレータ上では動作しません。必ず実機での確認が必要です。

上記のコードをiPhone 7 Plusの実機で実行すると、次のような結果が得られます。

SwiftのUIViewにライブカメラのプレビューを表示する方法

  1. iPhoneのライブ写真をInstagramに投稿する方法【ストーリーズ・フィード対応】

    ```html ライブ写真(Live Photos)は、iPhone 6sおよび6s Plus以降のすべてのiPhoneに搭載されている魅力的な機能です。シャッターを切った前後約3秒間の動画と音声が記録され、静止画に動きが加わることで、まるでハリー・ポッターの世界のような魔法の写真を実現します。さらに、Instagramのアップデートにより、このライブ写真をストーリーズはもちろん、フィードにも投稿できるようになりました。必要なのはiPhone、Instagramアカウント、そして最近撮影したライブ写真だけ。手順はとてもシンプルなので、SNSのプロフィールにひと味違う動きを加えたい方は、ぜひ以下

  2. Discordでライブ配信する方法!Go Live機能と画面共有の使い方を徹底解説

    Discordは、ゲームプレイやゲーム内でのコミュニケーションのためだけのプラットフォームではありません。テキストチャット、音声通話、ビデオ通話に加えて、さまざまな機能が提供されています。世界中に多くのファンを持つDiscordにとって、ライブ配信機能の搭載は時間の問題でした。「Go Live」機能を使えば、自分のゲームプレイを配信したり、パソコンの画面を他のユーザーと共有したりできるようになりました。 Discordでライブ配信をする方法自体はとても簡単ですが、「友人数人だけに画面を共有するのか」「サーバーのチャンネル全体に配信するのか」を事前に決めておく必要があります。このガイドでは、Di