我有一个ScrollView
,其中包含一个HStack
,其中包含一个ForEach
,其中包含一些带有附加过渡的自定义视图。看起来像这样:
ScrollView {
HStack {
ForEach(self.objects) { object in
ObjectView(object)
.transition(.slide)
}
}
}
当我更新self.objects
的内容时(在对withAnimation
的调用中),我希望新旧ObjectView
可以按照过渡指定的方式进行动画制作。< / p>
不幸的是,没有动画过渡出现。如果删除ScrollView
(保留HStack
为根视图),则动画过渡将按预期工作。
有没有办法让ScrollView
内的视图过渡动画?
答案 0 :(得分:0)
也许您有兴趣...这可行:
struct ObjectView : View {
var text: String
var body: some View {
Text(text)
}
}
struct ContentView: View {
@State var objects = ["a", "b", "c"]
var body: some View {
Group() {
Button("add") {
withAnimation() {
self.objects.append("f")
}
}
ScrollView {
HStack {
ForEach(objects, id: \.self) { object in
ObjectView(text: object)
.transition(.slide)
}
}.frame(width: 500)
}
}
}
}