到目前为止,我已经能够为View编写自定义修饰符;但是,当尝试保持代码干燥时,我试图为TextFields添加自定义修饰符。 View 修饰符可以很好地与类似这样的东西一起工作:
struct sampleModifier : ViewModifier {
var height: CGFloat? = 100
func body(content: Content) -> some View {
content
.frame(height: height)
.background(Color.white)
.border(Color.gray, width: 0.5)
.shadow(color: Color.black, radius: 15, x: 0, y: 10)
}
}
但是,当我尝试使用诸如
font
之类的修饰符时,它显示了很多错误。我确实知道他们可能需要更具体些,而要遵循TextFieldStyleModifier
,但是我不知道如何使它起作用。我已经尝试过以这种方式取得成功,但没有成功:struct TitleModifier : TextFieldStyleModifier {
func body(content: TextFieldStyle) -> some View {
content
.font(.custom("Open Sans", size: 18))
.color(Color.green)
}
}
显然失败并显示以下错误:
如果我单击
Fix
建议,它将添加到我的代码中TextFieldStyleModifier<<#Style: TextFieldStyle#>>
我不知道该怎么用。
有什么建议么?
最佳答案
TextField也是 View ,因此您以相同的方式创建修饰符:
struct TitleModifier : ViewModifier {
func body(content: Content) -> some View {
content
.font(.custom("Open Sans", size: 18))
.foregroundColor(Color.green)
}
}
另请注意,没有修饰符.color()。它是.foregroundColor()。
要将其应用于FormField时,只需执行以下操作:
TextField("", text: $field1).modifier(TitleModifier())
关于ios - SwiftUI:如何为文本添加自定义修饰符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56906408/