iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【Swift】YPImagePicker を使ってみた

iOSPhotoVideo のいい感じのピッカーライブラリを探していたところ、YPImagePicker というものを見つけたので使い方を紹介したいと思います🏃🏻‍♂️

github.com

使ってみる

今回は1~3枚の間で複数選択を有効にして、全て正方形の画像として取得できるようにしてみます。下記が実装のサンプルになります。screens で、フォトライブラリとカメラを選択していますが、ビデオも追加したい場合は、ここに .video を追加します。また、複数選択時に同じアスペクト比で出力できるのは正方形の場合のみなので onlySquare で、1:1アスペクト比のみを許容するようにしています。画像の取得は delegate 経由ではなく、didFinishPickingcompletionHandler で行います。

            var config = YPImagePickerConfiguration()
            config.library.maxNumberOfItems = 3
            config.library.minNumberOfItems = 1
            config.screens = [.library, .photo]
            config.startOnScreen = .library
            config.showsCrop = .rectangle(ratio: 1)
            config.library.onlySquare = true
            config.library.mediaType = .photo
            let picker = YPImagePicker(configuration: config)
            navigationController?.present(picker, animated: true, completion: nil)

            picker.didFinishPicking {[unowned picker, self] items, cancelled in
                let images = items.compactMap { item -> UIImage? in
                    switch item {
                    case .photo(let p):
                        return p.image
                    default: return nil
                    }
                }
                updateImagesAction(images)
                picker.dismiss(animated: true, completion: nil)
            }

インスタグラムのように異なるアスペクト比でも統一できる機能はいまのところないようなので、今後に期待したいですね🦅 (暇があったらコミットチャンス)

github.com

という感じで本日も以上になります。

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com