Animasi Implisit berbanding Eksplisit
Gunakan pengubah .animation() berbanding blok withAnimation {} untuk kegunaan berbeza.
Animasi Implisit berbanding Eksplisit ialah pelajaran Swift Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Swift Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
Dua Gaya Animasi
SwiftUI menyokong animasi tersirat, iaitu pengubah suai .animation, dan animasi eksplisit, iaitu penutupan withAnimation.
struct Demo: View {
@State private var scale = 1.0
var body: some View {
Circle().scaleEffect(scale)
}
}Animasi Tersirat dengan .animation
Melampirkan .animation(_:value:) pada paparan akan menganimasikannya setiap kali nilai terikat berubah.
Circle()
.scaleEffect(scale)
.animation(.easeInOut(duration: 0.3), value: scale)Mencetuskan Animasi Tersirat
Sebarang perubahan keadaan yang mempengaruhi paparan akan mencetuskan animasi tersirat yang ditakrifkan padanya secara automatik.
Button("Grow") {
scale = 2.0 // .animation fires automatically
}Animasi Eksplisit dengan withAnimation
withAnimation membungkus perubahan keadaan dan menganimasikan semua perubahan paparan yang terhasil secara serentak.
Button("Animate") {
withAnimation(.spring()) {
scale = 2.0
offset = 50
}
}Menganimasikan Pelbagai Properti
withAnimation lebih sesuai apabila anda mahu menganimasikan beberapa perubahan keadaan secara segerak 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 lengkung pemasaan tersuai.
.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)Melumpuhkan Animasi
Hantar .animation(.none, value:) atau bungkus perubahan dalam withAnimation(nil) untuk melumpuhkan animasi secara terpilih.
Circle()
.scaleEffect(scale)
.animation(.none, value: scale) // no animationKeutamaan Animasi
withAnimation eksplisit mengatasi pengubah suai .animation tersirat pada paparan anak.
withAnimation(.linear) {
value = true // linear wins over any .animation on subviews
}Animasi Berulang
Gunakan .repeatForever atau .repeatCount untuk animasi berulang seperti kesan denyutan.
.animation(
.easeInOut(duration: 0.8).repeatForever(autoreverses: true),
value: pulsing
)Kelewatan dan Kelajuan
Gabungkan animasi dengan pengubah suai .delay dan .speed pada nilai animasi.
.animation(.spring().delay(0.2).speed(1.5), value: flag)Memilih antara Tersirat dan Eksplisit
Gunakan animasi tersirat untuk animasi satu paparan yang terikat pada satu nilai; gunakan animasi eksplisit apabila menyelaraskan beberapa properti atau paparan.
// Implicit: simple, single view
.animation(.easeIn, value: isVisible)
// Explicit: multi-property or cross-view
withAnimation { a = 1; b = 2 }Semakan Ringkas
Pendekatan manakah yang paling sesuai untuk menyelaraskan animasi beberapa sifat keadaan secara serentak?
Ringkasan Pelajaran
Animasi tersirat (.animation(_:value:)) bertindak balas secara automatik terhadap perubahan nilai pada satu paparan. Animasi eksplisit (withAnimation {}) menyelaraskan beberapa mutasi. Gabungkan dengan .delay, .speed, dan .repeatForever untuk menghasilkan kesan yang kompleks.
Pelajari Swift dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Soalan Lazim
Adakah pelajaran “Animasi Implisit berbanding Eksplisit” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “Animasi Implisit berbanding Eksplisit”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Animasi Implisit berbanding Eksplisit”?
Gunakan pengubah .animation() berbanding blok withAnimation {} untuk kegunaan berbeza. Anda berlatih Swift Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Swift Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Swift Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Animasi Implisit berbanding Eksplisit” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Animasi Implisit berbanding Eksplisit
- matchedGeometryEffect untuk Peralihan Hero
- AnimatableModifier dan Animatable Tersuai
- TimelineView dan Canvas untuk Lukisan Berprestasi Tinggi