5

スクロールビューのデリゲートメソッドscrollViewDidEndDraggingで実行している単純なアニメーションがあります。animateWithDurationにバウンスアニメーションを追加する方法は?

それは次のようになります。それは上から来るときので、私のhomeLabelは上から来ている、と私はラベルにそれをバウンスアニメーションを追加したい指を持ち上げた後、このアニメーションを使用して

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { 

    NSLog(@"finger was lifted"); 

    [UIView animateWithDuration:1.0 
        animations:^{ 
         self.homeLabel.frame = self.view.frame; 
        }]; 
} 

スムーズに着陸するのではなく、素敵なバウンスがあります。どうすればいいですか? thanksss

+0

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/clm/UIView/animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations :完了: – Desdenova

答えて

0

addAnimation:forKey:メソッドをオーバーライドして、カスタムタイミング機能を組み込むためのカスタムレイヤーを作成することをお勧めします。

このanswerは、その方法の詳細に入ります。

もう1つの選択肢は、キーフレームアニメーションです。このquestion and answerはそのアプローチを非常にうまくカバーしています。

15

usingSpringWithDampingアニメーション機能を使用できます。

[UIView animateWithDuration:1.0 delay:0 usingSpringWithDamping:0.2 initialSpringVelocity:5.0 options:UIViewAnimationOptionCurveLinear animations:^{ 
    self.homeLabel.frame = self.view.frame; 
} completion:^(BOOL finished) { 

}]; 

Spring DampingInitial Spring Velocityを調整することで、あなたが望む効果を与えることができます。

+1

これは最高の答えです。 (投票されました) 'animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:'メソッドは、OPが要求していることに対して調整されています。私はgithubのデモプログラムを書いています。このデモプログラムでは、この呼び出しを使って時計の手を動かし、非常に現実的なバウンスルックを与えます。 –

関連する問題