Swift Compiler Error: "Type 'Watermark' does not conform to protocol 'ViewModifier'"
Swift Compiler Error: "Type 'Watermark' does not conform to protocol 'ViewModifier'"
我想添加一个 ViewModifier,如 Paul Hudson (https://www.hackingwithswift.com/books/ios-swiftui/custom-modifiers) 在以下教程中所述。
我的 ViewModifier 是:
import SwiftUI
struct Watermark: ViewModifier {
var text: String
func body(content: Content) -> some View {
ZStack(alignment: .bottomTrailing) {
content
Text(text)
.font(.caption)
.foregroundColor(.white)
.padding(5)
.background(Color.black)
}
}
}
extension View {
func watermarked(with text: String) -> some View {
self.modifier(Watermark(text: text))
}
}
但我收到以下错误:
我试图在另一个项目中重现它,但它按预期工作。我已经尝试清理构建文件夹,删除派生数据,重新启动 Xcode,重新启动 Mac。
关于如何解决这个问题有什么想法吗?
我认为您有名称冲突,即。在您的项目中(或从其他部分可见)还有另一个名为 Watermark
的实体,因此请尝试使此修饰符唯一。喜欢
struct WatermarkModifier: ViewModifier {
// .. other code
}
extension View {
func watermarked(with text: String) -> some View {
self.modifier(WatermarkModifier(text: text))
}
}
我之前遇到过这个错误,@Asperi 说这是命名冲突问题。项目中可能还有另一个名为 Content
的实体。
参考图片:
The correct one
If there is another class also name Content
我想添加一个 ViewModifier,如 Paul Hudson (https://www.hackingwithswift.com/books/ios-swiftui/custom-modifiers) 在以下教程中所述。 我的 ViewModifier 是:
import SwiftUI
struct Watermark: ViewModifier {
var text: String
func body(content: Content) -> some View {
ZStack(alignment: .bottomTrailing) {
content
Text(text)
.font(.caption)
.foregroundColor(.white)
.padding(5)
.background(Color.black)
}
}
}
extension View {
func watermarked(with text: String) -> some View {
self.modifier(Watermark(text: text))
}
}
但我收到以下错误:
我试图在另一个项目中重现它,但它按预期工作。我已经尝试清理构建文件夹,删除派生数据,重新启动 Xcode,重新启动 Mac。
关于如何解决这个问题有什么想法吗?
我认为您有名称冲突,即。在您的项目中(或从其他部分可见)还有另一个名为 Watermark
的实体,因此请尝试使此修饰符唯一。喜欢
struct WatermarkModifier: ViewModifier {
// .. other code
}
extension View {
func watermarked(with text: String) -> some View {
self.modifier(WatermarkModifier(text: text))
}
}
我之前遇到过这个错误,@Asperi 说这是命名冲突问题。项目中可能还有另一个名为 Content
的实体。
参考图片:
The correct one
If there is another class also name Content