Я пытаюсь сделать слайд вида сверху вниз. Это не имеет большого значения, я использовал CABasicAnimation
для этого. Проблема в том, когда я хочу удалить вид. Я использую эту анимацию.
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"];
Что отлично оживляет вид. Но после завершения анимации снова появляется мой вид. Поэтому я добавил эту строку:
[self.view removeFromSuperview];
Который удаляет вид, но без анимации. Поэтому я решил добавить код удаления к этому делегату:
-(void) animationDidStop:(CAAnimation *) animation finished:(bool) flag
Итак, теперь анимация работает, вид исчезает, но иногда я вижу, как вид появляется и исчезает быстрее, как после анимации, вид отображается, затем вызывается делегат animationDidStop
и вид исчезает Очевидно, это ужасно. Что я делаю не так?