1. ホーム
  2. ios

[解決済み] UIViewのバウンスアニメーションを作成するには?

2023-01-13 17:05:31

質問

というUIViewに以下のCATransitionがあります。 finalScoreView というUIViewに対して、次のようなCATransitionがあり、これが上から画面に入るようになっています。

CATransition *animation = [CATransition animation];
animation.duration = 0.2;
animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromBottom;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

[gameOver.layer addAnimation:animation forKey:@"changeTextTransition"];
[finalScoreView.layer addAnimation:animation forKey:@"changeTextTransition"];

下に降りてきてから一度跳ね、その後静止するようにするにはどうしたらよいでしょうか? 上から画面に入ってきて、下に降りてきたときにバウンドするのはそのままでいいです。

どんな助けでも非常に感謝されます、ありがとうございます

どのように解決するのですか?

iOS7 と UIKit Dynamics では、もはや CAKeyframeAnimations または UIView のアニメーションを作ることができます。

を見てみましょう。 AppleのUIKit Dynamicsカタログアプリ . 別の方法として Teehanlaxは、明確で簡潔なチュートリアル と共に githubのプロジェクト全体 . ダイナミクスに関するより詳細なチュートリアルをお望みなら Ray Winderlichチュートリアル は素晴らしいものです。いつものように、Appleのドキュメントは最初の訪問先として最適です。 UIDynamicAnimator クラス リファレンス をチェックしてください。

Teenhanlaxチュートリアルのコードの一部を紹介します。

self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];

UIGravityBehavior *gravityBehavior = 
                [[UIGravityBehavior alloc] initWithItems:@[self.redSquare]];
[self.animator addBehavior:gravityBehavior];
    
UICollisionBehavior *collisionBehavior = 
                [[UICollisionBehavior alloc] initWithItems:@[self.redSquare]]; 
collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;
[self.animator addBehavior:collisionBehavior];
    
UIDynamicItemBehavior *elasticityBehavior = 
                [[UIDynamicItemBehavior alloc] initWithItems:@[self.redSquare]];
elasticityBehavior.elasticity = 0.7f;
[self.animator addBehavior:elasticityBehavior];

そして、その結果がこちらです。

UIKit DynamicsはiOS7に追加された本当にパワフルで使いやすいもので、そこからいくつかの素晴らしい見た目のUIを得ることができます。

他の例です。

UIKitのダイナミクスを実装する手順はいつも同じです。

  1. を作成します。 UIDynamicAnimator を作成し、それをstrongプロパティに格納する
  2. 一つまたは複数の UIDynamicBehaviors . 各ビヘイビアは1つ以上のアイテム、通常はアニメートするビューを持つ必要があります。
  3. で使用されるアイテムの初期状態が、常に変化していることを確認します。 UIDynamicBehaviors の中で有効な状態であることを確認します。 UIDynamicAnimator シミュレーションの中で有効な状態です。