Animasi Implisit vs Eksplisit
Menggunakan modifier .animation() dibandingkan blok withAnimation {} untuk berbagai kebutuhan.
Animasi Implisit vs Eksplisit adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 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 Gaya Animasi
SwiftUI mendukung animasi implisit, yaitu modifier .animation, dan animasi eksplisit, yaitu closure withAnimation.
struct Demo: View {
@State private var scale = 1.0
var body: some View {
Circle().scaleEffect(scale)
}
}Animasi Implisit dengan .animation
Menambahkan .animation(_:value:) ke tampilan akan menganimasikannya setiap kali nilai terikat berubah.
Circle()
.scaleEffect(scale)
.animation(.easeInOut(duration: 0.3), value: scale)Memicu Animasi Implisit
Setiap perubahan status yang memengaruhi tampilan secara otomatis memicu animasi implisit yang ditentukan pada tampilan tersebut.
Button("Grow") {
scale = 2.0 // .animation fires automatically
}Animasi Eksplisit dengan withAnimation
withAnimation membungkus mutasi status dan menganimasikan semua perubahan tampilan yang dihasilkan secara bersamaan.
Button("Animate") {
withAnimation(.spring()) {
scale = 2.0
offset = 50
}
}Menganimasikan Beberapa Properti
withAnimation lebih tepat digunakan ketika Anda ingin menganimasikan beberapa perubahan status secara selaras sebagai satu transaksi.
withAnimation(.easeOut(duration: 0.5)) {
isExpanded = true
rotation = 90
opacity = 0.5
}Jenis Animasi
Swift menyediakan animasi spring, easeIn, easeOut, easeInOut, linear, dan kurva waktu khusus.
.spring(response: 0.4, dampingFraction: 0.6)
.easeInOut(duration: 0.3)
.linear(duration: 0.5)
.timingCurve(0.2, 0.8, 0.2, 1.0, duration: 0.4)Menonaktifkan Animasi
Berikan .animation(.none, value:) atau bungkus mutasi dalam withAnimation(nil) untuk menonaktifkan animasi secara selektif.
Circle()
.scaleEffect(scale)
.animation(.none, value: scale) // no animationPrioritas Animasi
withAnimation eksplisit memiliki prioritas lebih tinggi daripada modifier .animation implisit pada tampilan anak.
withAnimation(.linear) {
value = true // linear wins over any .animation on subviews
}Animasi Berulang
Gunakan .repeatForever atau .repeatCount untuk animasi berulang seperti efek berdenyut.
.animation(
.easeInOut(duration: 0.8).repeatForever(autoreverses: true),
value: pulsing
)Penundaan dan Kecepatan
Gabungkan animasi dengan modifier .delay dan .speed pada nilai animasi.
.animation(.spring().delay(0.2).speed(1.5), value: flag)Memilih Animasi Implisit atau Eksplisit
Gunakan animasi implisit untuk animasi satu tampilan yang terikat pada satu nilai; gunakan animasi eksplisit saat mengoordinasikan beberapa properti atau tampilan.
// Implicit: simple, single view
.animation(.easeIn, value: isVisible)
// Explicit: multi-property or cross-view
withAnimation { a = 1; b = 2 }Pemeriksaan Singkat
Pendekatan mana yang paling baik untuk mengoordinasikan animasi beberapa properti status secara bersamaan?
Ringkasan Pelajaran
Animasi implisit (.animation(_:value:)) secara otomatis merespons perubahan nilai pada satu tampilan. Animasi eksplisit (withAnimation {}) mengoordinasikan beberapa mutasi. Gabungkan dengan .delay, .speed, dan .repeatForever untuk menghasilkan efek yang kompleks.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Animasi Implisit vs Eksplisit” gratis?
Ya — teks lengkap “Animasi Implisit vs 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 vs Eksplisit”?
Menggunakan modifier .animation() dibandingkan blok withAnimation {} untuk berbagai kebutuhan. 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 1 dari 4.
Berapa lama pelajaran “Animasi Implisit vs 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
- Animasi Implisit vs Eksplisit
- matchedGeometryEffect untuk Transisi Hero
- AnimatableModifier dan Animatable Kustom
- TimelineView dan Canvas untuk Gambar Berkinerja Tinggi