ปลดล็อกพลังของ Core Animation Framework
ในฐานะนักพัฒนา iOS การสร้างส่วนต่อประสานผู้ใช้แบบไดนามิกและดึงดูดสายตาเป็นสิ่งสำคัญสำหรับการดึงดูดผู้ใช้และยกระดับประสบการณ์โดยรวมของแอพของคุณ ด้วยเฟรมเวิร์ก Core Animation คุณสามารถบรรลุเป้าหมายนี้ได้อย่างง่ายดาย เฟรมเวิร์กอันทรงพลังนี้ช่วยให้นักพัฒนาสามารถสร้างแอนิเมชั่นที่ลื่นไหลและตอบสนองได้ ทำให้แอปของคุณมีชีวิตขึ้นมา
ในบล็อกโพสต์นี้ เราจะเจาะลึกเกี่ยวกับ Core Animation framework สำรวจส่วนประกอบและเทคนิคที่สำคัญ พร้อมนำเสนอตัวอย่างเพื่อช่วยให้คุณเริ่มต้นสร้างแอนิเมชั่นของคุณเอง
ทำความเข้าใจกับ Core Animation Framework
- เลเยอร์ (CLayer): หัวใจสำคัญของ Core Animation คือแนวคิดของเลเยอร์ เลเยอร์คือตัวอย่างของคลาส CALayer ซึ่งมีหน้าที่จัดการเนื้อหาภาพ ภาพเคลื่อนไหว และคุณสมบัติของวัตถุ เลเยอร์ถูกจัดอยู่ในโครงสร้างแบบลำดับชั้น โดยแต่ละเลเยอร์จะมีพาเรนต์เลเยอร์เดียวและอาจมีเลเยอร์ย่อยหลายเลเยอร์
- แอนิเมชัน (CABasicAnimation, CAKeyframeAnimation, CATransition): Core Animation มีคลาสแอนิเมชันที่หลากหลายเพื่อช่วยคุณสร้างแอนิเมชันประเภทต่างๆ CABasicAnimation ใช้สำหรับภาพเคลื่อนไหวอย่างง่าย เช่น การย้ายเลเยอร์จากตำแหน่งหนึ่งไปยังอีกตำแหน่งหนึ่ง CAKeyframeAnimation มีความหลากหลายมากขึ้น ทำให้คุณสามารถสร้างภาพเคลื่อนไหวที่ซับซ้อนมากขึ้นโดยใช้คีย์เฟรม CATransition ใช้สำหรับการเปลี่ยนระหว่างสถานะต่างๆ เช่น จางเข้าและออก
- ฟังก์ชันกำหนดเวลา (CAMediaTimingFunction): ฟังก์ชันกำหนดเวลาใช้เพื่อกำหนดจังหวะของภาพเคลื่อนไหว CAMediaTimingFunction มีฟังก์ชันกำหนดเวลาที่กำหนดไว้ล่วงหน้า เช่น เชิงเส้น การง่ายเข้า การง่ายออก และการง่ายเข้า-ออก ซึ่งสามารถใช้เพื่อสร้างภาพเคลื่อนไหวที่ราบรื่นและเป็นธรรมชาติ
- ธุรกรรมแอนิเมชันหลัก (CATransaction): ธุรกรรมใช้เพื่อจัดกลุ่มแอนิเมชันหลายรายการเข้าด้วยกัน ทำให้สามารถดำเนินการพร้อมกันหรือตามเวลาที่กำหนดได้ CATransaction เป็นคลาสที่รับผิดชอบในการจัดการธุรกรรมเหล่านี้
เพื่อให้คุณเข้าใจวิธีการทำงานของ Core Animation ได้ดียิ่งขึ้น มาสร้างแอนิเมชั่นอย่างง่ายที่ย้ายสี่เหลี่ยมไปทั่วหน้าจอ:
สร้าง UIView และ CALayer
ขั้นแรก สร้าง UIView ใน ViewController และตั้งค่า CALayer ด้วยขนาด ตำแหน่ง และสีที่ต้องการ:
let myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
myView.backgroundColor = .red
view.addSubview(myView)
let myLayer = CALayer()
myLayer.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
myLayer.backgroundColor = UIColor.blue.cgColor
myView.layer.addSublayer(myLayer)
จากนั้น สร้าง CABasicAnimation เพื่อทำให้ตำแหน่งของเลเยอร์เคลื่อนไหว:
let animation = CABasicAnimation(keyPath: "position")
animation.fromValue = NSValue(cgPoint: CGPoint(x: 50, y: 50))
animation.toValue = NSValue(cgPoint: CGPoint(x: 250, y: 250))
animation.duration = 2.0
animation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
สุดท้าย เพิ่มแอนิเมชันลงในเลเยอร์และอัปเดตตำแหน่งสุดท้าย:
myLayer.add(animation, forKey: "positionAnimation")
myLayer.position = CGPoint(x: 250, y: 250)
ที่มา: ChatGPT





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)