酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

CropViewController が v2.6.0 になって Deployment Target が iOS 12.0に設定されているようになった

iOSアプリで画像をクリッピングすると言えば、利用するライブラリはほぼ TOCropViewController 一択です。

github.com

TOCropViewControllerには Objective-C向けのTOCropViewController と Swift向けの CropViewController との両方のライブラリが混在しています。僕が使っているのは CropViewController の方です。Carthage経由で CropViewController をインストールしています。

5日前に TOCropViewController の v2.6.0 がリリースされました。v2.6.0での大きな変更点は Swift Package Manager (SPM)に対応したところです。その影響か CropViewController の Deployment Target が iOS 12.0 になってしまいました。

トップページには今でも iOS 8以上対応と書かれているので間違いだと思いたい……ちなみに該当のIssueは以下の通りです。

github.com

現在開発中のアプリの Deployment Targetは iOS 11.4 なので、当然ビルドエラーが発生するようになってしまいました。

/PATH/ViewController.swift:13:8: Compiling for iOS 11.4, but module 'CropViewController' has a minimum deployment target of iOS 12.0:
/PATH/Carthage/Build/iOS/CropViewController.framework/Modules/CropViewController.swiftmodule/arm64-apple-ios.swiftmodule

解決方法その1:アップデートしない

一番簡単な解決方法は一つ前のバージョンを使うことです。

...
github "yhirano/LicensePlistViewController"
github "TimOliver/TOCropViewController" == 2.5.5
github "dzenbot/DZNEmptyDataSet"

解決方法その2:TOCropViewControllerを使う

TOCropViewController の方を使う。CropViewController 向けの実装ができているのであれば、少しの変更で対応が可能です。

解決方法その3:アプリのDeployment Targetをあげる

日本のスマホユーザーの大半が使っている「LINE」は、2021年1月4日現在 iOS 12.0〜 がサポートされているバージョンになります。アプリの Deployment Targetを iOS 12以上にしても問題ないと判断できそうです。