SWIFT UIベース2


ViewModifier

ViewModifierによって、類似した複数のスタイルのオブジェクトを簡略化することができる.
パラメータによってstyleの一部を変更することもできます.
…
Text(“txt1”).modifier(MyTextStyle())
Text(“txt2”).modifier(MyTextStyle())
Text(“txt3”).modifier(MyTextStyle(myWeight:.bold))
…
struct MyTextStyle: ViewModifier {
    var myWeight = Font.Weight.reqular
    var myFont = Font.title2

   func body(content: Content) -> some View {
       content
              .font(myFont.weight(myWeight))
              .foregroundColor(.orange)
              .padding(.bottom, 20) 
      }
}

SWIFTオブジェクト。プロトタイプ生成法


オブジェクトにcustom .prototypeを作成し、使いやすいようにします.
…
Text(“txt”).customFont()
…

extension Text {
   func customFont() -> Text {
       self
.font(.title2)
.bold()
.italic()
.foregroundColor(.blue)
   }
}

alert


基本確認alert

ok

Button(“Show alert”) {
  isShowAlert.toggle()
}
.alert(isPresented: $isShowAlert, content: {
    Alert(title: Text(“hello alert text!!”))
})

cancel

Alert(title: Text(“hello alert text!!”), dismissButton: .cancel())

primary, secondary alert

primaryボタン毎にsecondaryボタンを押すと変数サンプルコードが変換されます
@state private var selectText = “none”;

…
.alert(isPresented: $isShowAlert, content: {
    let primaryBtn = 
        Alert.Button.default(Text(“done”)) {
            selectText = “done”
        }

    let secondaryBtn = 
        Alert.Button.default(Text(“cancel”)) {
             selectText = “cancel”
        }
    
   return Alert(
            title: Text(“hello alert text!!”), 
            primaryButton: primaryBtn,
            secondaryButton: secondaryBtn
        )
})