コア アニメーションを使用して UiView を適切にアニメーション化するのに少し問題があります。これが私のコードです:
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setFromValue:[NSValue valueWithCGPoint:self.view.layer.position]];
[animation setToValue:[NSValue valueWithCGPoint:CGPointMake(250, self.view.layer.position.y)]]; //I want to move my UIView 250 pts to the right
[animation setDuration:1];
[animation setDelegate:self]; //where self is the view controller of the view I want to animate
[animation setRemovedOnCompletion:NO];
[self.view.layer addAnimation:animation forKey:@"toggleMenu"]; //where self.view returns the view I want to animate
次のデリゲート メソッドも実装しました。
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
if(flag)
[self.view.layer setTransform:CATransform3DMakeTranslation(250, 0, 0)]; //set layer to its final position
}
UIView が右に 250 ポイント移動するようにしようとしています。ただし、アニメーションがトリガーされると、ビューが動き始めますが、ビューが右に 250 ポイント移動する前にアニメーションが終了するように見えるため、UIView が最終位置に「テレポート」します。何がこの動作を引き起こしているのか理解できないようです。
UIView メソッドも使用してみましたが+(void)animateWithDuration:animations:
、このアプローチは完全に機能します。setTimingFunction:functionWithControlPoints:
ただし、微妙な「バウンス」効果を達成しようとしており、複数のコールバックを使用するのではなく、メソッドを使用してそれを達成したいと考えています。
どんな助けや提案も大歓迎です。