YapAnimator
1.0.0

Yapanimator是您基於物理的快速友好的動畫系統。 Yapanimator的構建是易於使用的,使您和您的設計師非常非常高興。所有動畫都是可中斷的,包括完成塊,並允許您向其施加力(例如,在過渡中添加速度)。我們包括了一些常見動畫類型( CG類型)的Animatable協議符合性,但是添加與任何其他類型的一致性確實很容易。您可以用一系列Double s來製作任何可以代表和構成的東西 - 查看屬性,音樂卷,bezier路徑,顏色,平滑筆觸之間的變形,列表繼續……使用您的想像力!
因為它非常易於使用並製作精美的動畫,所以這就是原因。那裡還有其他基於物理的動畫系統(例如Uikit的春季動畫,Facebook的流行音樂),但是他們仍然需要編寫太多的代碼,簿記和手工握持的方式。 Yapanimator代表了我們在自己的應用程序中使用多年的代碼的蒸餾n-thth迭代。我們發現它在我們的日常工作中無價之寶,並認為您也會。
Yapanimator帶有一個方便的擴展名,固定在CALayer和UIView / NSView上,分別在animatedLayer和animated屬性下提供單線動畫。

func handle ( gesture : UIPanGestureRecognizer ) {
if gesture . state == . began {
squircle . animated . cornerRadius . animate ( to : squircle . bounds . width / 2.0 )
squircle . animated . rotationZ . animate ( to : . pi )
else if gesture . state == . changed {
squircle . animated . position . instant ( to : gesture . location ( in : nil ) )
} else if gesture . state == . ended {
squircle . animated . position . animate ( to : self . view . center )
squircle . animated . cornerRadius . animate ( to : 0 )
squircle . animated . rotationZ . animate ( to : 0 )
}
} 創建自定義動畫師很簡單:
initialValue這將設置動畫師的初始值,並告知它將為哪種類型進行動畫。willBegin在運動開始之前打電話。返回您要動畫的屬性的實際值。這允許動畫儀與該值同步,以防該值在動畫師的範圍之外更改。 (選修的)eachFrame框架稱為動畫的每個幀 - 通常是您將動畫儀的current.value應用到您正在動畫的屬性的地方。您也可以使用它來檢查值以觸發其他操作 /動畫。 frameAnimator = YapAnimator ( initialValue : square . frame , willBegin : { [ unowned self ] in
return self . square . frame
} , eachFrame : { [ unowned self ] ( animator ) in
self . square . frame = animator . current . value
} ) 
frameAnimator . bounciness = 1.5
frameAnimator . animate ( to : square . frame . insetBy ( dx : - 50 , dy : - 50 ) , completion : { animator , wasInterrupted in
if !wasInterrupted {
// animate back to the original value
animator . animate ( to : animator . current . value . insetBy ( dx : 50 , dy : 50 ) )
}
} ) 在問題中隨時提出您的問題。我們將在那裡做出回應,如果答案似乎將使他人受益,請修改此閱讀/啟動Wiki。
Yapanimator由YAP Studios擁有和維護。