Estoy intentando hacer que una vista se deslice de arriba hacia abajo. Esto no es gran cosa, usé CABasicAnimation
para esto. El problema es cuando quiero eliminar la vista. Yo uso esta animaciónDespués de la animación, la posición de vista se restablece
CABasicAnimation *animation;
animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setDelegate:self];
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(self.view.layer.position.x, 0 - self.view.bounds.size.height/2)];
animation.fromValue = [NSValue valueWithCGPoint:self.view.layer.position];
animation.autoreverses = NO;
animation.repeatCount = 0;
animation.duration = 0.25;
animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
[self.view.layer addAnimation:animation forKey:@"moveX"];
Que anima la vista perfectamente. Pero, después de que termina la animación, mi vista aparece nuevamente. Así que agregué esta línea:
[self.view removeFromSuperview];
Lo que elimina la vista, pero sin animación. Así que he decidido añadir el código de eliminación de este delegado:
-(void) animationDidStop:(CAAnimation *) animation finished:(bool) flag
Así que ahora, los trabajos de animación, la vista desaparece, pero a veces, puedo ver la vista aparecen y desaparecen más rápido, es como después de la animación, el aparece la vista, luego se llama al delegado animationDidStop
, y la vista desaparece, obviamente esto es horrible. ¿Qué estoy haciendo mal?
¿Por qué no lo vi? Gracias, esto resolvió mi problema. Creo que esto es un error, no debería estar haciendo eso, pero al menos funciona. – carlos
Estoy de acuerdo, o nos falta algo, ya que SI FUNCIONA en la muestra. ¡Necesito experimentar más, supongo! –