Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
Se llama a la finalización de UIViewPropertyAnimator cuando está en pausa

No he usado mucho UIViewPropertyAnimator (todavía soy un chico de bloques anticuado) y estoy viendo un comportamiento que no puedo explicar y que los documentos realmente no brindan ninguna información.

¿Por qué se llama al bloque de finalización de un animador con una posición final de finalPosition incluso cuando el animador se .end inmediatamente después de que se inicia?

 let view = UIView() let animator = UIViewPropertyAnimator(duration: 4, curve: .linear, animations: { view.alpha = 0 }) animator.addCompletion { position in print("done") switch position { case .start: print("start") case .current: print("current") case .end: print("end") } } animator.startAnimation() print("starting") animator.pauseAnimation() print("pausing")

Producción:

 starting pausing done end
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El problema, como aludió @matt, es que su vista no está en una UIWindow visible, por lo que las animaciones se completan de inmediato. Obtiene el mismo resultado si comenta la instrucción animator.pauseAnimation() .

Puede solucionar esto si está utilizando un patio de recreo haciendo view la vista en liveView de la página del patio de recreo:

 import PlaygroundSupport import UIKit let view = UIView() PlaygroundPage.current.liveView = view // etc.
over 4 years ago · Santiago Trujillo Denunciar

0

Si lee la documentación de addCompletion del sitio para desarrolladores de Apple, uno de los parámetros es finalPosition. Y puede usar el valor para determinar si la animación se detuvo al principio, al final o en algún punto intermedio. Y llamar a pauseAnimation activará ese bloque de finalización con un lugar en la posición intermedia.

Parámetros finalización Un bloque para ejecutar cuando finalicen las animaciones. Este bloque no tiene valor de retorno y toma el siguiente parámetro:

finalPosition La posición final de las animaciones. Utilice este valor para determinar si las animaciones se detuvieron al principio, al final o en algún punto intermedio.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda