On Appear работает только для 1-го экземпляра ... как я могу это изменить - PullRequest
2 голосов
/ 31 января 2020

У меня есть фрагмент кода, который заставляет мой текст отображаться в середине экрана и кратко вводить и выводить, идеально. НО он делает это только при первом вызове функции. В следующий раз он показывает текст, но не анимацию.

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?

спасибо Always Striving

1 Ответ

0 голосов
/ 31 января 2020

При скрытии не сбрасывается состояние scale, поэтому в следующем шоу нет изменений в состоянии, поэтому нет анимации. Просто добавьте ниже .onAppear

.onDisappear {
    self.scale = 1
}
...