温馨提示:本文翻译自stackoverflow.com,查看原文请点击:swift - On Appear only works for 1st instance... how can I change that
swift swiftui xcode swift5

swift - On Appear仅适用于第一实例...我该如何更改

发布于 2020-04-04 00:38:26

我有一段代码可以使我的文字出现在屏幕中间,并可以短暂,完美地跳入和跳出。但是它仅在第一次调用该函数时执行。在以下时间中,它显示文本,但不显示动画。

VStack {
    GameView(showText: self.$showText, imageName: self.$imageName)
    Button(action: {
        withAnimation {
            self.showText.toggle()
            self.attempts += 1

        }
    }, label: {
        Text("Show / Hide Text")
    })
}
    if self.showText {
        VStack {
            Spacer()
            HStack {
                Spacer()
                Image(imageName)
                //animation here
                .scaleEffect(scale)

                    .onAppear{

                        let baseAnimation = Animation.easeInOut(duration: 0.5)
                        let repeated = baseAnimation.repeatForever(autoreverses: true)

                        return withAnimation(repeated) {
                            self.scale = 0.5


                        }


                }

                Spacer()
            }
            Spacer()
        }


    }


}

我应该使用On Appear以外的其他东西吗?

一直以来的努力

查看更多

提问者
Lynxbci
被浏览
133
Asperi 2020-01-31 23:14

隐藏时,它不会重置scale状态,因此下一次放映时不会更改状态,因此不会显示动画。只需在下面添加.onAppear

.onDisappear {
    self.scale = 1
}