
Yapanimator เป็นระบบแอนิเมชั่นฟิสิกส์ที่รวดเร็วและเป็นมิตรของคุณ Yapanimator ถูกสร้างขึ้นโดยคำนึงถึงความสะดวกในการใช้งานทำให้ คุณ มีสติและนักออกแบบของคุณมีความสุข มาก ภาพเคลื่อนไหวทั้งหมดสามารถขัดจังหวะได้รวมถึงบล็อกที่สมบูรณ์และช่วยให้คุณสามารถใช้แรงกับพวกเขา (เช่นการเพิ่มความเร็วจากท่าทางในการเปลี่ยนแปลง) เราได้รวมความสอดคล้องของโปรโตคอล Animatable สำหรับบางประเภทภาพเคลื่อนไหว (ประเภท CG ) แต่มันง่ายมากที่จะเพิ่มความสอดคล้องกับประเภทอื่น ๆ คุณสามารถเคลื่อนไหวทุกสิ่ง ที่คุณสามารถเป็นตัวแทนและแต่งด้วยอาร์เรย์ของ Double - ดูคุณสมบัติระดับเสียงเพลง, morphing ระหว่างเส้นทาง Bezier, สี, จังหวะแปรงที่เรียบเนียน, รายการต่อไป ... ใช้จินตนาการของคุณ!
เพราะมันใช้งานง่ายและสร้างภาพเคลื่อนไหวที่สวยงามนั่นคือเหตุผล มีระบบแอนิเมชั่นที่ใช้ฟิสิกส์อื่น ๆ (เช่นแอนิเมชั่นฤดูใบไม้ผลิของ Uikit ป๊อปของ Facebook) แต่พวกเขายังต้องการการเขียนโค้ดการทำบัญชีและการถือครองด้วยมือมากเกินไปสำหรับรสนิยมของเรา Yapanimator แสดงถึงการทำซ้ำ N-TH ของรหัสที่เราใช้ในแอพของเราเองมานานหลายปี เราพบว่ามันมีค่าในวันต่อวันและคิดว่าคุณจะเช่นกัน
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 ) )
}
} ) อย่าลังเลที่จะถามคำถามของคุณในปัญหา เราจะตอบกลับที่นั่นและแก้ไขการอ่านนี้/เริ่มวิกิหากคำตอบดูเหมือนว่ามันจะเป็นประโยชน์ต่อผู้อื่น
Yapanimator เป็นเจ้าของและดูแลรักษาโดย Yap Studios