not good but great

プログラミング、アート、映画・本の感想について書きます。

Swift製のアニメーションライブラリ「Spring」にPull requestしてみた

「Spring」にPull request


Add easing functions by naoyashiga · Pull Request #40 · MengTo/Spring · GitHub
折角Githubアカウント持っているのだから、Pull requestしてオープンソースに貢献してみようと思った。かと言って技術力もないので、簡単でせこくて、初心者でもできる改修はないか探した。それで見つけたのが最近cloneしたことのあったSwift製のアニメーションライブラリ「Spring」。

何を改修するのか

Easingの種類が既存の4つ(easeIn,easeOut,easeInOut,linear)と作者が作った(Spring)しかなかったので、その種類を増やそうと思った。

Easingの種類を増やそう。

CAMediaTimingFunctionはカスタムできるのかと調べた。ベジェ曲線の4点?を指定できるようだ。
[iOS] Core AnimationのCAMediaTimingFunctionでRobert Pennerのイージングを近似 « きんくまデザイン

controlPointsを使って4点指定

easeInSineだったらこんな感じ。

CAMediaTimingFunction(controlPoints: 0.47, 0, 0.745, 0.715)

もともとライブラリ内で定義されている「spring」は変数forceを使って下のように定義されていた。

CAMediaTimingFunction(controlPoints: 0.5, 1.1+Float(force/3), 1, 1)

controlPointsを使って4点指定すれば、自分が好きなやつを作れる。ただし、4点しか指定できないので、より複雑なEasingを作ることは、このやり方ではできない。
Apple Developer Documentation


さらなるカスタムはこれを読めばできるらしいが、自分には難しくてよくわからないw
iphone - How to create custom easing function with Core Animation? - Stack Overflow

controlPointsで実現できるEasingを追加

こちらを参考にした。たくさんEasingが載っている。下の方にある「easeInElastic」などは4点controlPointsで指定しても実現はできない。controlPointsの指定で、できるやつを全部追加してみた。多いけど笑
イージング関数チートシート

追加して、Pull Requestを送ってみた。結果はいかに。













追記
マージされました!やったね