es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿La activación de la animación basada en la fase siempre activa del Apple Watch no está funcionando como se esperaba?

Puede que esté haciendo algo mal, pero siguiendo la documentación de Apple para pausar la animación y admitir el estado ‘Always On’ en WatchOS 8, con el código a continuación mi animación pausará correctamente cuando la fase de escena esté inactiva, pero cuando se vuelva a activar la fase de escena, ¿la animación no se reanudará?

struct PulseView: View {

    @Environment(\.scenePhase) private var scenePhase

    @State var animate = false

    var body: some View {
       if scenePhase == .active {
                ZStack {
                    ZStack {
                        Circle().fill(circlesColor().opacity(0.25)).frame(width: outerCircleSize, height: outerCircleSize).scaleEffect(self.animate ? 1 : 0.01)
                        Circle().fill(circlesColor().opacity(0.35)).frame(width: middleCircleSize, height: middleCircleSize).scaleEffect(self.animate ? 1 : 0.01)
                        Circle().fill(circlesColor()).frame(width: innerCircleSize, height: innerCircleSize)
                    }
                    .onAppear { self.animate = true }
                    .animation(animate ? Animation.easeInOut(duration: 1.5).repeatForever(autoreverses: true) : .default)

          } else {
                  ZStack {
                      ZStack {
                          Circle().fill(circlesColor().opacity(0.25)).frame(width: outerCircleSize, height: outerCircleSize).scaleEffect(self.animate ? 1 : 0.01)
                          Circle().fill(circlesColor().opacity(0.35)).frame(width: middleCircleSize, height: middleCircleSize).scaleEffect(self.animate ? 1 : 0.01)
                          Circle().fill(circlesColor()).frame(width: innerCircleSize, height: innerCircleSize)
                      }
                      //.onAppear { self.animate = true }
                      //.animation(animate ? Animation.easeInOut(duration: 1.5).repeatForever(autoreverses: true) : .default)
          }

    }
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Es posible que la animación no se reanude porque la variable animate no se está estableciendo nuevamente en true cuando la escena vuelve a estar activa. Intente establecer self.animate = true en el bloque else donde se crea el ZStack cuando la escena no está activa, arriba de las líneas comentadas. Esto debería asegurar que la animación se reinicie cuando la escena vuelva a estar activa.

Comments are closed.