0

我正在尝试创建此修饰符:

struct CustomTextBorder: ViewModifier {
    func body(content: Content) -> some View {
        return content
            .font(.largeTitle)
            .padding()
            .overlay(
                RoundedRectangle(cornerRadius: 15)
                    .stroke(lineWidth: 2)
            )
            .foregroundColor(.blue)
    }
}

当我这样做时,我得到Type 'CustomTextBorder' does not conform to protocol 'ViewModifier'错误。

看来我必须添加:

typealias Body = <#type#>

但是,我看到修改器就像我最初在这里所做的那样创建,而无需提供typealias Body...

这个修饰符在这里工作:

https://www.simpleswiftguide.com/how-to-make-custom-view-modifiers-in-swiftui/

为什么它对我不起作用?

我怎样才能使这个修饰符起作用?为什么它对某些人有效而对其他人无效?这是否取决于项目的目标?我的目标是 iOS 15。

4

2 回答 2

0

没有看到你的实现,看起来你没有初始化修饰符。确保您在末尾使用大括号CustomTextBorder()。请记住,它仍然是一个需要调用的函数。

Text("SwiftUI Tutorials")
  .modifier(CustomTextBorder())

如果您扩展View

extension View {
  func customTextBorder() -> some View {
    return self.modifier(CustomTextBorder())
  }
}
于 2022-02-03T14:29:42.233 回答
0

您的代码运行良好,但为什么要使用 ViewModifier?你不需要 ViewModifier 这个简单的东西,你可以通过这种方式使用扩展:

struct ContentView: View {
    
    var body: some View {

        Text("Hello, World!").customTextBorder
        
    }
    
}



extension Text {
    
    var customTextBorder: some View {
        
        return self
            .font(.largeTitle)
            .padding()
            .overlay(
                RoundedRectangle(cornerRadius: 15)
                    .stroke(lineWidth: 2)
            )
            .foregroundColor(.blue)
        
    }
    
}

在此处输入图像描述

于 2021-08-10T20:38:28.937 回答