para editar como comando bloques bloque battman atributos actualizar ios animation ios8 reset

ios - como - comando para editar bloques autocad



Los bloques de animación se restablecen a la posición original después de actualizar el texto (2)

Actualmente estoy probando mis aplicaciones para el lanzamiento de iOS 8. Noté que después de realizar un bloque de animación, la animación se restablece si actualizo el texto de cualquier etiqueta. Ejecuté un ejemplo simple con un método que se muestra a continuación. Ejecutar este ejemplo da como resultado lo siguiente:

  • Al myButton clic en myButton la primera vez, se ejecuta la animación, pero se restablece cuando se cambia el texto de la etiqueta.
  • Al myButton clic en myButton la segunda vez, la animación se ejecuta pero no se restablece a la posición original.

Parece que esto sucede porque el texto de la etiqueta no cambia. Si elimino completamente la línea que actualiza el texto, esto también impide que la animación se reinicie al final.

Me gustaría arreglar esto para que cuando se ejecute el método, el texto de la etiqueta pueda actualizarse sin restablecer la animación.

- (IBAction)move:(id)sender { [UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ self.myButton.center = CGPointMake(200, 300); }completion:^(BOOL finished){ if(finished){ self.myLabel.text=@"moved"; } }]; }


Este problema puede deberse a la configuración automática de diseño en UIView. Hablando estrictamente, si está utilizando el diseño automático, no debería animar la posición absoluta de los objetos, sino que debería animar sus restricciones .

Al cambiar el texto de la etiqueta una vez que la animación está en marcha, se activa una actualización del diseño, y el iOS baraja todo para cumplir con las restricciones de vista originales. (Sospecho que este es un cambio de comportamiento de iOS7).

Solución rápida: desmarque Auto Layout en la Vista, y esto debería funcionar como se esperaba.


Prueba esto. Ponga la animación deseada en el bloque final también.

- (IBAction)move:(id)sender { [UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ self.myButton.center = CGPointMake(200, 300); }completion:^(BOOL finished){ if(finished){ self.myLabel.text=@"moved"; self.myButton.center = CGPointMake(200, 300); } }]; }