在Apple SwiftUI Tutorial: Drawing Paths and Shapes上,将显示以下语法:
struct Badge: View {
var body: some View {
GeometryReader { geometry in
Path { path in
...
}
.fill(Color.black)
}
}
}我没有看到Swift docs on structs中的语法,感到非常困惑。
此外,如何知道geometry在GeometryReader语句中,不管这是什么意思?
发布于 2020-06-12 18:06:12
这是尾部闭包的简化语法,因此
Path { path in
...
}就像
Path( { (path) in
...
})使用的Path构造函数的数量
/// Initializes to an empty path then calls `callback` to add
/// the initial elements.
public init(_ callback: (inout Path) -> ())顺便说一句,这种语法在SwiftUI中被广泛使用,因此您将在VStack { .. }、GeometryReader { g in ... }、ScrollView { ... }以及SwfitUI框架的几乎所有其他UI元素中看到相同的语法。
发布于 2020-06-12 18:03:20
这与结构无关。这就是闭包语法,其中in之前的变量名是闭包的输入参数。
在SwiftUI的上下文中,该闭包实际上是一个ViewBuilder,它是一种特定类型的函数构建器。您可以阅读有关函数阅读器和其他语法糖的更多信息,这些语法糖使SwiftUI成为可能的here。
您可以通过在Xcode中单击闭包输入参数来了解闭包输入参数的类型,就像其他变量一样。或者,您可以查看GeometryReader的文档,了解它的闭包接受哪些输入参数。
https://stackoverflow.com/questions/62341839
复制相似问题