UIKit Dynamicsを試してみた
iOS7 SDKから新たに追加されたUIKit Dynamicsというのを使ってみたのでご紹介。
UIKit Dynamicsは簡単に言うと、UIKitのビューたちを簡単に物理的に動かすことができるようになるAPIです。
使い方もとても簡単で、UIDynamicAnimator
というビューを動かすためのクラスに対して、用意されたBehaviorクラスを設定させてやるだけで、ビューを動かすことができます。
例えば、あるView Controllerのself.view
上にあるtargetView
というビューを、point
で示すポイントに吸い付かせるように動かすコードは以下にように3行で書けます。
CGPoint point = CGPointMake(100.0f, 100.0f);
UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
UISnapBehavior *snapBehavior = [[UISnapBehavior alloc] initWithItem:targetView snapToPoint:point];
[animator addBehavior:snapBehavior];
もともと用意されているBehaviorクラスは以下の6つです。
UIAttachmentBehavior
ある場所を起点にビューを動かすことのできるBehaviorUICollisionBehavior
画面の枠や他のビューとの衝突を管理することのできるBehaviorUIDynamicItemBehavior
ビューの特性を変えることのできるBehaviorUIGravityBehavior
ビューに重力を与えることのできるBehaviorUIPushBehavior
ビューを押したような効果を与えることのできるBehaviorUISnapBehavior
ビューをある点に吸着させたような効果を与えることのできるBehavior
これらのBehaviorクラスは1つずつでも使えますが、いくつかを組み合わせて使うこともできます。
ちなみにBehaviorは独自にも実装できます。
UIDynamicItem
プロトコルに則ったクラスを作ればいいみたいです。
ってことで、これらでちょっと遊んでみたので、その時のコードをgithubに上げておきました。
実行するとUIKit Dynamicsがどんなものかわかると思います。
あとサンプルコードを実行したら動画も上げておきます。