在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))