
Yapanimator adalah sistem animasi berbasis fisika yang cepat dan ramah. Yapanimator dibangun dengan mudah digunakan, membuat Anda tetap waras dan desainer Anda sangat, sangat bahagia. Semua animasi dapat terganggu, termasuk blok penyelesaian, dan memungkinkan Anda untuk menerapkan kekuatan pada mereka (misalnya menambahkan kecepatan dari gerakan dalam transisi). Kami telah menyertakan kesesuaian protokol Animatable untuk beberapa tipe animasi yang umum (tipe CG ), tetapi sangat mudah untuk menambah kesesuaian dengan jenis lain. Anda dapat menghidupkan apa pun yang dapat Anda wakili dan menyusun dengan serangkaian properti Double S - View, volume musik, morphing antara jalur bezier, warna, sapuan sikat yang merapikan, daftarnya berlanjut ... Gunakan imajinasi Anda!
Karena sangat mudah digunakan dan membuat animasi yang indah, itulah sebabnya. Ada sistem animasi berbasis fisika lainnya di luar sana (misalnya Animasi Musim Semi Uikit, Pop Facebook), tetapi mereka masih membutuhkan terlalu banyak kode, pembukuan, dan pegangan tangan untuk selera kita. Yapanimator mewakili iterasi kode-ke-N yang telah kami gunakan di aplikasi kami sendiri selama bertahun-tahun. Kami merasa sangat berharga dalam sehari-hari kami dan berpikir bahwa Anda juga akan.
Yapanimator hadir dengan ekstensi praktis yang dibaut ke CALayer dan UIView / NSView , masing-masing memberikan animasi satu-garis di bawah animatedLayer dan properti animated , masing-masing.

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 )
}
} Membuat animator khusus sangat mudah:
initialValue Ini menetapkan nilai awal animator dan menginformasikannya jenis apa yang akan menjiwai.willBegin menelepon sesaat sebelum gerakan dimulai. Kembalikan nilai aktual dari properti yang akan Anda jenieh. Ini memungkinkan animator untuk menyinkronkan dengan nilai itu jika diubah di luar ruang lingkup animator. (opsional)eachFrame disebut setiap bingkai animasi - ini biasanya di mana Anda akan menerapkan animator current.value Nilai ke properti yang Anda animasi. Anda juga dapat menggunakannya untuk memeriksa nilai untuk memicu tindakan / animasi lain. 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 ) )
}
} ) Jangan ragu untuk mengajukan pertanyaan Anda dalam masalah. Kami akan merespons di sana, dan mengubah ini baca saya/mulai wiki jika jawabannya sepertinya akan bermanfaat bagi orang lain.
Yapanimator dimiliki dan dikelola oleh Yap Studios.