ビューを上から下にスライドさせようとしています。これは大したことではありません、私はこれに使用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
デリゲートが呼び出されてビューが消えるような、ビューの表示と非表示が速くなることがあります。これは明らかにひどいことです。私は何が間違っているのですか?