SwiftUI iOS14以降はLabel、それ以前はImage+Text
iOS13を救うには#availableを書く。
共通化すれば綺麗。
今回の場合はViewが違うので良いが、Modifiersを#availableで囲いたい時がある。
Example
Button(action: {
self.save()
}, label: {
if #available(iOS 14.0, *) {
Label("Save", systemImage: "tray.and.arrow.down")
.font(.title)
}
else {
HStack {
Image(systemName: "tray.and.arrow.down")
.font(.title)
Text("Save")
.font(.title)
}
}
})
共通化
import SwiftUI
struct ButtonLabel: View {
let action: () -> Void
let message: String
let systemImage: String
var body: some View {
Button(action: self.action
, label: {
if #available(iOS 14.0, *) {
Label(NSLocalizedString(self.message, comment: ""),
systemImage: self.systemImage)
}
else {
HStack {
Image(systemName: self.systemImage)
Text(NSLocalizedString(self.message, comment: ""))
}
}
})
}
}







