【Swift5】HEICファイルへの対応

高画質なくせにメモリ節約の点でも効果のある HEIC ぱいせんですが、古い端末だと対応していないので表示することはできません。
厳密には iOS11 以降の端末で iPhone7/7Plus 以上、iPad 第6世代以上は HEIC 対応していますが、それ以前の端末は対応していません。
iCloud 経由などで画像を共有している場合は、非対応端末でも表示する可能性があるので、その際の対応方法を記載していこうと思います。

開発環境(前提条件)

・Xcode11.6
・Swift5

判定方法

めっちゃシンプルコードなので、class 作ったり extension 作ったり適宜お使いくだせい。

CGImageDestinationCopyTypeIdentifiers はその端末でサポートしている画像ファイルの配列を返してくれるので、その中に AVFileType.heic があるかどうかで HEIC に対応しているか確認しています。
“public.heic” でも判定できますが、一応 AVFileType 経由で判定してます。

HEIC 非対応端末で表示する方法

対応しているかどうかを上記の .isSupportHEIC() で判定して、必要であれば画像を再生成しましょう。
画像複製するコードも載っけときます。

画像複製する処理の中に HEIC 判定を書いて、非対応なら生成して対応していたらそのまま UIImage を返すって感じでもいいと思いますが、個人的に extension の中に extension を使うのが好きじゃないので別々にしてます 三└(┐卍 ˘ω˘)卍

さいごに

こういう古い端末では使えません系って、サポート切りたくなります。笑
まぁサポートするんですけどねー

他にも方法あれば教えてください!

コメント