在SwiftUI中,可以自定义自己的Modifier。当很多 View 有共性的 Modifier ,如共同的background color,padding,font 等,此时可以通过自定义 Modifier 进行封装,避免重复。
那么如果自定义Modifier呢?
- 新建一个结构体实现 ViewModifier 协议。
- 实现 body(content:) 方法。
- 然后将需要的 Modifier 修饰到 content 参数上。
定义Modifier的例子
struct ClearButton: ViewModifier {
@Binding var text: String
public func body(content: Content) -> some View {
HStack {
content
Button(action: {
self.text = ""
}) {
if self.text != "" {
Image(systemName: "multiply.circle.fill")
.foregroundColor(.secondary)
}
}
}
}
}
struct hiddenView: ViewModifier {
@Binding var isHidden: Bool
public func body(content: Content) -> some View {
Group {
if !isHidden {
content.hidden()
} else {
content
}
}
}
}
使用Modifier的例子
TextField("", text: self.$inputText).keyboardType(.asciiCapable).textFieldStyle(RoundedBorderTextFieldStyle()).modifier(ClearButton(text: self.$inputText))