我想知道滚动视图偏移量,并在互联网上发现他们是这样做的:
GeometryReader { geometry -> Text in
let newOffset = geometry.frame(in: .global).minY
if newOffset != self.offset {
self.offset = newOffset
}
return
Text("aha")
}
不幸的是,我的“返回类型”是
ForEach (MathTaskType.allCases) { eachType in
MathTypeRow(mathType: eachType)
}
我不知道在这里写什么(xxxx)。
我在 Group 周围尝试过它,但我没有让它运行......
谢谢您的帮助。
GeometryReader { geometry -> xxxxxx in // what do i have to input here?
let newOffset = geometry.frame(in: .global).minY
if newOffset != self.offset {
self.offset = newOffset
}
return
ForEach (MathTaskType.allCases) { eachType in
MathTypeRow(mathType: eachType)
}
}
在这里, AnyView 类型是救援:
GeometryReader { geometry -> AnyView in
let newOffset = geometry.frame(in: .global).minY
if newOffset != self.offset {
self.offset = newOffset
}
return AnyView ( // <- Here!
ForEach (MathTaskType.allCases) { eachType in
MathTypeRow(mathType: eachType)
}
)
}
它将任何 View 转换为通用类型,没有泛型类型的困难。
当然, ForEach 本身也有一个类型,我猜它类似于ForEach<[MathTaskType], MathTaskType.ID, MathTypeRow>
. 但这并不是更好,使用 AnyView 还为未来的变化提供了灵活性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句