我想在 a 包围的一组视图上应用自定义转换GeometryReader
,如下所示:
(✔) 自定义过渡作品:
var body: some View {
ZStack {
VStack {
VStack {
ForEach(modelView.views) { view in
GeometryReader(content: { geometry in
RoundedRectangle(cornerRadius: 25.0)
})
.transition(.myCustomTransition)
// Transition declared on the enclosing GeometryReader
// Custom transition works
}
}
}
}
(✗) 自定义转换被忽略,默认为.opacity
:
var body: some View {
ZStack {
VStack {
VStack {
ForEach(modelView.views) { view in
GeometryReader(content: { geometry in
RoundedRectangle(cornerRadius: 25.0)
.transition(.myCustomTransition)
// Transition declared on the RoundedRectangle, as intended
// Custom transition gets replaced by an .opacity transition
})
}
}
}
}
在上面的第一个代码块中的工作上的自定义转换RoundedRectangles
可以在其中声明GeometryReader
,但我不能像这样构造它,因为我需要RoundedRectangles
' 当前定位数据 - 我必须从geometry
var 中获取 - 以作为自定义转换的输入。(为简洁起见,上述代码中省略了这部分,将其视为类似)所以我需要在第二个示例中.myCustomTransition(param: aRequiredValueFromTheGeometryProxy)
的上述类似内容中声明转换。GeometryReader
我想不出为什么第二个示例中的转换不能按预期工作的任何原因。我绝不是 SwiftUI 方面的专家,所以我很确定我在这里弄错了。
任何关于为什么会发生这种情况以及任何可能的解决方法的想法将不胜感激!
PS 不出所料,.transition(.identity)
在附件上添加一个GeometryReader
不起作用。
PPS 我没有包括我的自定义转换实现,因为它似乎对问题无关紧要。(即当我用 替换转换值时.slide
,这也不起作用)