到目前为止,我已经能够为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)

    }
}

显然失败并显示以下错误:
ios - SwiftUI:如何为文本添加自定义修饰符-LMLPHP

如果我单击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/

10-13 09:27