SwiftUI iOS14以降はLabel、それ以前はImage+Text
iOS13を救うには#availableを書く。
共通化すれば綺麗。
今回の場合はViewが違うので良いが、Modifiersを#availableで囲いたい時がある。
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 ) } } }) |
共通化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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 : "" )) } } }) } } |