讓我們看看類似彈簧動作的物體。紅色的圓仿佛附有非常有彈性的彈簧一般在移動。綠色的圓帶著稍微平滑一些的彈性移動。藍色的不帶有彈性,但會在接近終點值時以指數級衰退速度的動畫變得非常的緩慢。
第三個球實際上并沒有彈性,但它的動畫依然被現實世界的彈簧物理法則所管理,是怎么回事呢?彈簧不是應該有彈性么?如我之前所說,附有彈簧的物體的動作實際上由彈簧的特性決定。想象一個彈簧,組成彈簧的線非常的細。這個彈簧的拉力是非常的松額,如果你在其底部掛上一個小物體,并松開它,你就會看到如紅球演示的彈性動作。比較一個擁有更多線圈和更大拉力的更加高強度類型的彈簧。掛在這種類型彈簧上的物體動作會很沒有彈性,因為彈簧的屬性非常不同。
類似彈簧動作的動畫曲線和簡單類型動作的動畫曲線可能看起來相似(至少他們都是曲線!),但是它們背后的數學運算是非常不同的。如前所說,簡單曲線通過三維貝塞爾函數來定義繪制曲線控制點的位置。不幸的是,很多高級類型的曲線不能用貝塞曲線來描述。其中一種曲線就是阻尼彈簧系統。
使用好的擁有彈簧感覺動畫的動作類型一般模仿阻尼諧振,其可以調整彈簧末端方塊質量、彈簧的剛度、阻尼強度等不同值。
質量
是指掛在彈簧末端物體的質量。剛度
是指拉伸彈簧的難度,一般由彈簧的厚度和盤繞的密度決定。阻尼強度
是指抵抗力度或者摩擦力,就如你嘗試在水中快速拖動你的手時受到的阻力。這些是定義一個彈簧動作的關鍵屬性。
如果你想要從頭構建起你對web、iOS或其他平臺的動畫庫,并且想要支持類似彈簧的動畫,你就需要理解彈簧系統背后大量的數學知識才能正確地實現它。幸運的是,對于iOS,有很多已經存在的優秀的動畫框架(由蘋果公司或其他人創建)可以用來創建自然的、類似彈簧的動畫。
在我們投入動畫編碼之前,讓我們從頭開始討論開發iOS app的基本原則,然后進入界面開發和iOS動畫。
查看完整合集:https://github.com/Cloudox/Motion-Design-for-iOS