iOS7から物理シュミレーションがOSから提供されるようになりました。
Viewに重力を設定したりViewとViewを連結する という設定をしておくことが出来ます。
こういう条件だけ設定しておけば、あとはこの設定した条件に従って勝手にViewが動きます。それがiOS7から追加されたDynamicBehaviorです。

iOS7.0の段階で使えるDynamicBehaviorは
- UIAttachmentBehavior  View同士の連結
- UICollisionBehavior   View同士が重ならない
- UIGravityBehavior   Viewに重力がかかる
- UIPushBehavior    ViewとViewに斥力(反発する力)がかかる
- UISnapBehavior    ViewとViewに引力がかかる
の6つです。これらは全てこういう名前のClassでDynamicBehaviorの子クラスです。
これをViewに設定すればViewはそれに合わせて動きます。

実際にやってみましょう。とりあえず重力から。
重力をViewに設定します。

    UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];

    [redView setBackgroundColor:[UIColor redColor]];

    [self.view addSubview:redView];

    

    UIGravityBehavior *gravityBeahvior = [[UIGravityBehavior alloc] initWithItems:@[redView]];


この例では、とりあえず赤いViewを作っています。そしてGravityBehaviorを作り、そのアイテムとしてViewを追加しています。
面白いのがViewにaddBehaviorみたいにするんじゃなくて Behaviorの方にViewを追加する点ですね。

さて、これでは動きません。
Behaviorは条件を示すだけで、この条件を元に動かすのはUIDynaicAnimatorというアニメータークラスです。
こいつを作って「このViewにこういうBehaviorね、任せた!」と渡すと勝手にViewを操ってくれます。
完成したのがこちら。

#import "SimpleGravityViewController.h"


@interface SimpleGravityViewController ()

@property (nonatomic, strong) UIDynamicAnimator *animator;


@end


@implementation SimpleGravityViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    

    // target

    UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];

    [redView setBackgroundColor:[UIColor redColor]];

    [self.view addSubview:redView];

    

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

    

    UIGravityBehavior *gravityBeahvior = [[UIGravityBehavior alloc] initWithItems:@[redView]];

    [self.animator addBehavior:gravityBeahvior];

}


@end


これをそのままコピペしてViewControllerとして表示させれば、赤いViewが出てきて画面の下に落ちていくと思います。
やっていることとしてはさっきのようにBehaviorをつくり赤いViewをItemとして追加しています。
そして、DynamicAnimatorを作っています。こいつは消えちゃうと困るのでpropertyとしてViewControllerが保持します。
このanimatorにまず、アニメーションが有効なViewを設定します。今回はself.view。
そして、gravityBehaviorをaddBehaviorします。これでself.view上でこのBehaviorが有効になります。
有効になったということは赤いviewには重力がかかったかのような動きをAnimatorが勝手にやってくれるということなので
赤いViewは下に落ちていったわけです。

you can use pictures and texts on this site as you like.