15単位のように画面を上げ、減速して(すぐに停止しないでください)、戻ってくる画像が必要です。私はこれに非常に慣れておらず、何をすべきかわかりません。誰かが助けてくれることを願っています。さらに情報が必要な場合はお知らせください。ありがとう!
2 に答える
CABasicAnimation または UIView アニメーションの 2 つのパスを使用できます (コードの違いは大きくありません)。UIView は、よりシンプルでシンプルなアニメーションに適しています。CAAnimation は Quartz フレームワークで必要であり、より低い設定もあります。この 2 つのガイドはhttp://www.raywenderlich.com/2454/how-to-use-uiview-animation-tutorial、http://www.raywenderlich.com/5478/uiview-animation-tutorial-practical-recipesに役立ちます
シンプルな CAAnimation の使用 (例として):
-(void)animationRotation
{
CABasicAnimation *anim;
anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; // this what you need - slow down (not an immediate stop)
anim.duration = 0.5;
anim.repeatCount = 1;
anim.fromValue = [NSNumber numberWithFloat:0];
[anim setDelegate:self];
anim.toValue = [NSNumber numberWithFloat:(15)];
[myView.layer addAnimation:anim forKey:@"transform"];
CGAffineTransform rot = CGAffineTransformMakeTranslation(15.0);
myView.transform = rot;
}
画像を含む UIImageView を取得し、 で上向きにアニメーション化しanimateWithDuration:delay:options:animations:completion:
ます。アニメーション ブロックframe
では、イメージ ビューの を変更するだけです。
上りoptions
を使用します。UIViewAnimationOptionCurveEaseOut
完了したら、今度は を使用してすぐに 2 番目のアニメーションを開始しますUIViewAnimationOptionCurveEaseIn
。したがって
NSTimeInterval durationUp = 1.5;
[UIView animateWithDuration:durationUp delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
CGRect f = imageView.frame;
f.origin.y += 15;
imageView.frame = f;
}
completion:nil];
[UIView animateWithDuration:1.5 delay:durationUp
options:UIViewAnimationOptionCurveEaseIn
animations:^{
CGRect f = imageView.frame;
f.origin.y -= 15;
imageView.frame = f;
}
completion:nil];