iOSエンジニアのつぶやき

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

【Swift】CropViewController を使ってみた

今日は、SwiftObjective-C で画像をトリミングする際に非常に有名なライブラリ、CropViewController を使ってみたいと思います📱

github.com

Swift 標準の UIImagePickerController クラスでもallowsEditingtrue にすることで、画像選択後にトリミングをすることはできるんですが、スクエアしかサポートされていないので異なるアスペクト比で画像をトリミングすることができません😢 (もし、標準でできるものがあれば是非教えてください)

ということで CropViewController を使ってみます。

それではやっていく

今回は SPM(Swift Package Manager) で導入していくので、まずは依存関係を追加します。

  1. File > Swift Packages > Add Package Dependency を選択します。

  2. プロジェクトを選択後に https://github.com/TimOliver/TOCropViewController.git を入力し、リポジトリを探します。

  3. 表示された依存関係を追加します。

  4. インストールが完了したので実際に使ってみます。

デフォルトだと左側の画像のようになります。今回はアスペクト比の指定のみできれば良かったので、他のボタンは非表示に設定しています。また、aspectRatioPreset を設定することでデフォルトのアスペクト比を設定することができるようです。

デフォルト カスタム
f:id:yum_fishing:20201227161458p:plain f:id:yum_fishing:20201227161515p:plain
let cropViewController = CropViewController(image: result.image)
cropViewController.delegate = self
cropViewController.aspectRatioPreset = .preset16x9
cropViewController.rotateButtonsHidden = true
cropViewController.cancelButtonTitle = "キャンセル"
cropViewController.doneButtonTitle = "完了"
cropViewController.children.first?.modalTransitionStyle = .coverVertical
self?.present(cropViewController, animated: true, completion: nil)

ちなみにこの設定は、CropViewController を閉じる時に元の画面が見えなくなってしまう問題を修正するために modalTransitionStyle.coverVertical にしています 🤔 スタックオーバーフローにも同様の問題があったのでリンクも載せておきます。

stackoverflow.com

cropViewController.children.first?.modalTransitionStyle = .coverVertical

という感じで今日は以上になります。それではまた明日🦅

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com