我正在尝试创建一个使用该resizable()
函数的自定义图像修改器,因此我content
应该是一个Image
. 至少,我是这么认为的。
错误消息:类型“IconModifier”不符合协议“ViewModifier”
struct IconModifier: ViewModifier {
func body(content: Image) -> some View {
content
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 10, height: 10, alignment: .center)
}
}
Run Code Online (Sandbox Code Playgroud)
Geo*_*e_E 12
您可以Image
改为扩展。
像这样使用:
struct ContentView: View {
var body: some View {
VStack {
Text("Hello World!")
Image("someName")
.imageIconModifier()
}
}
}
Run Code Online (Sandbox Code Playgroud)
Image
延期:
extension Image {
func imageIconModifier() -> some View {
self
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 10, height: 10, alignment: .center)
}
}
Run Code Online (Sandbox Code Playgroud)
你首先得到错误:
类型“IconModifier”不符合协议“ViewModifier”
这意味着您IconModifier
不满足ViewModifier
协议的要求,如果我们看到定义:
func body(content: Self.Content) -> Self.Body
Run Code Online (Sandbox Code Playgroud)
而你有:
func body(content: Image) -> Self.Body
Run Code Online (Sandbox Code Playgroud)
这不起作用。所以接下来 - 我们将把它改为Content
而不是Image
:
“IconModifier.Content”(又名“_ViewModifier_Content”)类型的值没有成员“可调整大小”
这基本上是说.resizable()
any没有修饰符View
。该.resizable()
修饰符只里面定义里面extension Image
,所以没有其他View
有此修改。
这是核心问题-无法访问原始View
(Image
通过为我们所希望的)content
中的一个参数ViewModifier
。
这就是为什么我只是为Image
.
希望这个解释有帮助!
归档时间: |
|
查看次数: |
1217 次 |
最近记录: |