【发布时间】:2021-03-29 00:39:15
【问题描述】:
虽然下面的例子很简单,但它无法编译,因为 Swift 无法确定 Text() 视图是泛型约束所需的内容类型(错误“无法将'Text'类型的值转换为闭包结果类型'内容'")。
有什么办法可以让 init 满足通用约束?
extension VStack {
init() {
self.init(spacing: 0) {
Text("Test")
}
}
}
用 George_E 的回复更新后的完整示例如下所示。
extension VStack {
init<InnerContent: View>(alignment: HorizontalAlignment = .center, spacing: CGFloat? = nil, @ViewBuilder content: @escaping (GeometryProxy) -> InnerContent) where Content == GeometryReader<InnerContent> {
self.init(alignment: alignment, spacing: spacing) {
GeometryReader { proxy in
content(proxy)
}
}
}
}
【问题讨论】: