【Swift】OSバージョンを判定して処理を分ける

Swift

SwiftではOSのバージョンに依存した処理がいくつかあります。例えば、iOS11以降ではUIViewに.safeAreaInsetsというセーフエリアの大きさを取得できる処理が追加されました。

このようなOSバージョンに合わせた処理を実行させる方法をメモしておきます。

処理の分け方

コードで書く場合

if #available(iOS 11.0, *) {
    // 端末のOSがiOS11以上ならここに書いた処理を実行
}
else {
    // それ以外ならここの処理を実行
}

attributeで書く場合

@available(iOS 11, *) 
func hoge() {
    // 端末のOSがiOS11以上ならここに書いた処理を実行
}

引数について

コードで書いた場合もattributeで書いた場合も特徴的な引数ですが、iOS以外にもtvOSやwatchOSのバージョンで分けたい場合は以下のように書きます。

if #available(tvOS 11.0, *) {
    // 端末のtvOSが11以上ならここに書いた処理を実行
}

if #available(watchOS 5.0, *) {
    // 端末のwatchOSが5以上ならここに書いた処理を実行
}

コメント