Animasi Implisit dan Eksplisit
Animasikan properti layer dengan CABasicAnimation.
Animasi Implisit dan Eksplisit adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Dua Cara Menganimasikan Lapisan
Core Animation menyediakan animasi implisit, yang berjalan otomatis saat properti berubah, dan animasi eksplisit, yang menggunakan objek animasi yang Anda buat sendiri.
Memahami keduanya dan cara keduanya berinteraksi merupakan kunci untuk menghasilkan gerakan yang halus.
Animasi Implisit
Mengubah properti yang dapat dianimasikan pada lapisan mandiri memicu animasi implisit menggunakan kurva bawaan selama 0,25 detik—tanpa memerlukan objek animasi.
let layer = CALayer()
// Later, this animates automatically:
layer.opacity = 0.0Properti yang Dapat Dianimasikan
Banyak properti lapisan dapat dianimasikan: opacity, position, bounds, backgroundColor, transform, cornerRadius, dan lainnya.
layer.cornerRadius = 20 // animates implicitly
layer.backgroundColor = UIColor.systemGreen.cgColorAksi dan Mekanisme Aksi
Animasi implisit digerakkan oleh aksi. Saat suatu properti berubah, lapisan mencari CAAction untuk dijalankan. Anda dapat menyesuaikan atau menonaktifkan aksi ini.
Lapisan yang Didukung Tampilan Menonaktifkan Animasi Implisit
Lapisan yang terpasang pada UIView menonaktifkan animasi implisit. Anda dapat menganimasikannya melalui UIView.animate atau menggunakan animasi eksplisit.
UIView.animate(withDuration: 0.3) {
view.alpha = 0
}CABasicAnimation
CABasicAnimation menganimasikan satu properti di antara fromValue dan toValue. Tambahkan animasi tersebut ke lapisan dengan jalur kunci yang sesuai dengan propertinya.
let anim = CABasicAnimation(keyPath: "opacity")
anim.fromValue = 1.0
anim.toValue = 0.0
anim.duration = 0.5
layer.add(anim, forKey: "fade")Presentasi vs Model
Animasi eksplisit hanya mengubah nilai presentasi yang terlihat di layar; nilai model milik lapisan kembali seperti semula saat animasi berakhir.
Agar perubahan tetap tersimpan, tetapkan juga nilai modelnya.
layer.opacity = 0.0 // set model value so it persists
layer.add(anim, forKey: "fade")Animasi Bingkai Kunci
CAKeyframeAnimation menganimasikan beberapa values melalui keyTimes, atau mengikuti path—cocok untuk pantulan atau gerakan mengikuti kurva.
let move = CAKeyframeAnimation(keyPath: "position")
move.values = [
NSValue(cgPoint: CGPoint(x: 0, y: 0)),
NSValue(cgPoint: CGPoint(x: 100, y: 0)),
NSValue(cgPoint: CGPoint(x: 100, y: 100))
]
move.duration = 1.0
layer.add(move, forKey: "path")Fungsi Pengaturan Waktu
Atur percepatan dengan timingFunction: percepatan masuk, perlambatan keluar, linier, atau kurva Bezier kubik khusus.
anim.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)Pengelompokan dan Transaksi
Bungkus beberapa perubahan dalam CATransaction untuk menggunakan durasi dan pengaturan waktu yang sama, atau untuk menonaktifkan animasi implisit sepenuhnya.
CATransaction.begin()
CATransaction.setDisableActions(true)
layer.position = CGPoint(x: 200, y: 200)
CATransaction.commit()Delegasi Animasi dan Penyelesaian
Tetapkan CATransaction.setCompletionBlock atau delegasi animasi untuk menjalankan kode saat gerakan selesai—misalnya untuk pembersihan, penyambungan animasi berikutnya, atau pembaruan status.
CATransaction.begin()
CATransaction.setCompletionBlock { print("done") }
layer.add(anim, forKey: "fade")
CATransaction.commit()Pemeriksaan Singkat: Animasi
Uji pemahaman Anda tentang animasi implisit dan eksplisit.
Ringkasan: Animasi Implisit dan Eksplisit
Lapisan mandiri menganimasikan dirinya secara implisit melalui aksi saat properti yang dapat dianimasikan berubah; lapisan yang didukung tampilan menonaktifkan perilaku ini dan menggunakan UIView.animate. CABasicAnimation dan CAKeyframeAnimation eksplisit menganimasikan nilai presentasi, jadi perbarui nilai model agar hasilnya tetap tersimpan.
Sesuaikan gerakan dengan fungsi pengaturan waktu, kelompokkan perubahan dalam CATransaction, dan gunakan blok penyelesaian untuk pekerjaan lanjutan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Animasi Implisit dan Eksplisit” gratis?
Ya — teks lengkap “Animasi Implisit dan Eksplisit” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Animasi Implisit dan Eksplisit”?
Animasikan properti layer dengan CABasicAnimation. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Animasi Implisit dan Eksplisit” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar CALayer
- Animasi Implisit dan Eksplisit
- Transformasi dan Efek 3D
- Menggambar Kustom dengan Core Graphics