SwiftUI的 特性 - ViewModify
记录一下SwiftUI的 特性 - ViewModify的使用方式
可以通过viewModify来管理视图的样式,结合extension来完成封装达到解偶效果
import SwiftUI
/// 我们可以通过viewModify来管理视图的样式,来达到解偶效果
struct DefaultButtonViewModifier: ViewModifier {
@State var font: Font
@State var bgColor: Color
func body(content: Content) -> some View {
content
.font(font)
.foregroundColor(.white)
.frame(height: 55)
.frame(maxWidth: .infinity)
.background(bgColor)
.cornerRadius(10.0, antialiased: /*@START_MENU_TOKEN@*/true/*@END_MENU_TOKEN@*/)
.shadow(radius: 10)
}
}
extension View {
/// MARK - 通过拓展来简化调用过程从而完成封装
func withDefaultButtonFormatting(bgColor: Color = .blue, font: Font = .title) -> some View {
modifier(DefaultButtonViewModifier(font: font, bgColor: bgColor))
}
}
struct ViewModifierBootCamp: View {
var body: some View {
VStack(spacing: 20, content: {
Text("Hello, World!")
.withDefaultButtonFormatting(bgColor: .yellow)
Text("Hello, everyOne!")
.withDefaultButtonFormatting(font: .title3)
Text("Hello !!")
.withDefaultButtonFormatting(bgColor: .green, font: .headline)
}).padding()
}
}
#Preview {
ViewModifierBootCamp()
}
效果: