はじめに
iOS 18から新しいSF Symbolsが登場しましたが、アップデートしていない端末ではアイコンが何も表示されない問題に直面しました。ここでは、iOSバージョンごとに異なるSF Symbolsを表示する方法を紹介します。実装自体かなり簡単なので、役に立てていただければと思います。
実装
import SwiftUI
struct ContentView: View {
var body: some View {
// iOSのバージョンによって使用するSF Symbolsを変更
if #available(iOS 18, *) {
// iOS 18以上の場合
Image(systemName: "numbers")
.font(.largeTitle)
} else {
// iOS 18未満の場合
Image(systemName: "arrow.2.circlepath")
.font(.largeTitle)
}
}
}
#Preview {
ContentView()
}
・if #available(iOS 18, *) { ... } else { ... }:
この条件分岐は、現在のデバイスがiOS 18以上かどうかを確認します。iOS 18以上の場合は、新しいSF Symbols「numbers」を使用し、そうでない場合は古いシンボル「arrow.2.circlepath」を表示します。
シミュレーターで確認
シミュレーターで異なるiOSバージョン、iOS 18
とiOS 17.4
でのアイコンの表示を比較します。
まとめ
この実装により、iOS 18未満の端末でも別のアイコンを表示することができます。