到目前为止,我能够为视图编写自定义修饰符;然而,当我试图保持我的代码 DRY 时,我试图为 TextFields 添加一个自定义修饰符。视图修饰符非常适用于以下内容:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用诸如font等修饰符时,它显示了很多错误。我明白他们可能需要更具体,而不是符合TextFieldStyleModifier,但我不知道如何使它工作。我试图这样做但没有成功:
struct TitleModifier : TextFieldStyleModifier {
func body(content: TextFieldStyle) -> some View {
content
.font(.custom("Open Sans", size: 18))
.color(Color.green)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我点击Fix建议,它会将其添加到我的代码中
TextFieldStyleModifier<<#Style: TextFieldStyle#>>
Run Code Online (Sandbox Code Playgroud)
我不知道怎么用。
有什么建议?
我找不到任何有关如何使用SwiftUI 在前景上对图像进行线性渐变的相关文档。
我试图这样做:
Image("IconLoseWeight")
.frame(width: 30.0, height: 30.0)
.padding(.leading, 17)
.foregroundColor(LinearGradient(gradient: Gradient(colors: [.white, .black]), startPoint: .top, endPoint: .bottom))
Run Code Online (Sandbox Code Playgroud)
实际上,上面显示的代码不会显示任何错误,但是会使用在顶级堆栈中没有意义的警告来打乱代码(我认为这是Xcode或SwiftUI的错误)。如果删除foreground修饰符,则代码可以完美运行。