1

UIVIew(コンテナ) と別のUIView(ボックス) があり、ボックス ビューは の中にありますContainerView。aUIButtonが押されると、ボックス ビューが画面の下部からドロップダウンし、10px 残ってバウンスします。バウンスが停止したら、ボックスに 10px を表示させたいと思います。別の質問からのサンプルコードを次に示します。

UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self]; //self is the container

UIGravityBehavior* gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[box]];
[animator addBehavior:gravityBehavior];

UICollisionBehavior* collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[reportBar.bar]];
collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;
[animator addBehavior:collisionBehavior];

UIDynamicItemBehavior *elasticityBehavior =
[[UIDynamicItemBehavior alloc] initWithItems:@[box]];
elasticityBehavior.elasticity = 0.7f;
[animator addBehavior:elasticityBehavior];

コードは必要なときに実行されていますが、ボックスはドロップしていません。

レイアウト例

編集1:

  • Self はコンテナー UIView を参照します
  • currentViewController.view の self も変更しようとしましたが、変更はありません。

編集2:

  • このコードはすべて、コンテナー ビューの実装ファイル内にあります。
4

3 に答える 3

3

アニメーターのプロパティを作成してみてください。

@property UIDynamicAnimator *animator;

そしてあなたのコード、

_animator = [[UIDynamicAnimator alloc] initWithReferenceView:self];

 ...
于 2014-05-28T05:41:00.437 に答える
1

次のコード スニペットは、ビューにBOUNCE EFFECTを提供できます。

CABasicAnimation * animation = [CABasicAnimation animationWithKeyPath:@"position.y"];</br>
[animation setFromValue:[NSNumber numberWithFloat:y-position1]];   
[animation setToValue:[NSNumber numberWithFloat:y-position2]];
[animation setDuration:.7];    //   time gap between the bounces
animation.repeatCount=500;    //    no:of times bounce effect has to be done 
[YOURVIEW.layer addAnimation:animation forKey:@"somekey"];
于 2015-02-27T03:58:04.573 に答える