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: "")) } } }) } }