Quantcast
Channel: その後のその後
Viewing all articles
Browse latest Browse all 314

[iOS][Objective-C][ライブラリ][アニメーション]Facebook Paper のアニメーションエンジン「pop」のソースコードを読んでみる

$
0
0

先日公開されたFacebookのpop、アニメーションライブラリですよとリリース前から言われてたものの、popについて語られるときは大抵「Paperアプリのテクノロジーをオープンソース化」という枕詞がつくので、Paper風UIコンポーネント(ジェスチャーでヌルヌル操作できる)もライブラリに含まれてたらいいなとか、せめてサンプルが Paper 風だといいなとかうっすら期待してたのですが、まったくそんなことなく、やっぱり純粋なるアニメーションライブラリでした。サンプルプロジェクトすらつかない硬派っぷり。。


じゃあ今まで実現が難しかったような何か(ド派手なアニメーションとか?)ができるようになってるのか、というとそういうわけでもなくて、


In addition to basic static animations, it supports spring and decay dynamic animations, making it useful for building realistic, physics-based interactions.


ベーシックなアニメーション以外には、 spring (バネ風にボヨヨーンとなる)と、 decay (スーッと速度が減衰する) アニメーションをサポートしている、ってことで、正直地味です。


バネっぽいアニメーションに関しては iOS 7 で標準サポートされた し、イージングについてはCore Animation で自由に数式や関数の曲線を指定できるので、このあたりはどうとでもできるし、そのあたりを いい感じにラップしてくれてる OSS もいくつかあります。


そんなわけで pop の神髄はそこ自体ではないはず、この記事 にあるような、パフォーマンスへの配慮 とかカスタマイズ性 にあるはず、で、それって具体的にどういう実装になってるんだろう、とソースを見てみることにしました。


popクラス群の依存関係

`POPVector` とか `TransformationMatrix` とかどうアニメーションに活かされてるのかパッとわからなかったので、 objc_dep でクラスの依存関係を出力 してみました。


f:id:shu223:20140502192405p:image:w600


・・・相当入り組んでますが、局所的にみればこのクラスはこれとあれに参照されてるのか、とかいろいろわかります。


(つづく・・・)


Viewing all articles
Browse latest Browse all 314

Trending Articles