「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を送ってみた。結果はいかに。
追記
マージされました!やったね