SwiftUI为你提供了自定义modifiers的能力。 你可以使用自定义modifiers将多个modifiers合成一个。 本章我们将创建一个自定义modifier,他能够为TextView添加圆角和背景。
Getting ready
新建一个SwiftUI工程UsingViewModifiers。
How to do it…
- 修改ContentView中的text为Perfect。
Text("Perfect")
- 在ContentView.swift中,新建一个struct,遵循ViewModifier,接受一个参数Color。
struct BackgroundStyle: ViewModifier {
var bgColor: Color
func body(content: Content) -> some View{
content
.frame(width:UIScreen.main.bounds.width * 0.3)
.foregroundColor(Color.black)
.padding()
.background(bgColor)
.cornerRadius(CGFloat(20))
}
}
- 为Text添加一个modifier。
Text("Perfect").modifier(BackgroundStyle(bgColor:.blue))
- 当然,如果你不想用modifier, 可以添加一个extension。
extension View {
func backgroundStyle(color: Color) -> some View{
self.modifier(BackgroundStyle(bgColor: color))
}
}
- 将我们的modifier修改为刚刚的extension
Text("Perfect").backgroundStyle(color: Color.red)
How it works…
一个 ViewModifier通过修改原来修饰的View来创建一个新的View 。
通过通过遵循ViewModifier协议来创建一个自定义modifier。
通过.modifier()来应用我们自定义的modifier。
通过extension来添加更方便的Api。