如何在ScrollView中执行视图的动画过渡?

时间:2019-07-05 09:52:57

标签: swiftui

我有一个ScrollView,其中包含一个HStack,其中包含一个ForEach,其中包含一些带有附加过渡的自定义视图。看起来像这样:

ScrollView {
    HStack {
        ForEach(self.objects) { object in
            ObjectView(object)
                .transition(.slide)
        }
    }
}

当我更新self.objects的内容时(在对withAnimation的调用中),我希望新旧ObjectView可以按照过渡指定的方式进行动画制作。< / p>

不幸的是,没有动画过渡出现。如果删除ScrollView(保留HStack为根视图),则动画过渡将按预期工作。

有没有办法让ScrollView内的视图过渡动画?

1 个答案:

答案 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)
            }
        }
    }
}