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以上ならここに書いた処理を実行
}
コメント