Saya menetapkan nilai teks baru ke a UILabel
. Saat ini, teks baru muncul dengan baik. Namun, saya ingin menambahkan beberapa animasi saat teks baru muncul. Saya bertanya-tanya apa yang bisa saya lakukan untuk menghidupkan tampilan teks baru.
ios
objective-c
ipad
uilabel
caanimation
Taman Joo
sumber
sumber
Jawaban:
Saya ingin tahu apakah itu berfungsi, dan itu bekerja dengan sempurna!
Objektif-C
Swift 3, 4, 5
sumber
Objektif-C
Untuk mencapai benar cross-larut transisi (label lama memudar sementara label baru memudar dalam), Anda tidak ingin memudar untuk tak terlihat. Ini akan menghasilkan flicker yang tidak diinginkan bahkan jika teks tidak berubah .
Gunakan pendekatan ini sebagai gantinya:
Lihat juga: Menghidupkan teks UILabel di antara dua angka?
Demonstrasi di iOS 10, 9, 8:
Diuji dengan Xcode 8.2.1 & 7.1 , ObjectiveC di iOS 10 hingga 8.0 .
► Untuk mengunduh proyek lengkap, cari SO-3073520 di Swift Recipes .
sumber
-addAnimation:forKey
untuk label itu, lalu ubah teks labelnya.Cepat 4
Cara yang tepat untuk memudar label UIL (atau UIView dalam hal ini) adalah dengan menggunakan a
Core Animation Transition
. Ini tidak akan berkedip, juga tidak akan pudar menjadi hitam jika kontennya tidak berubah.Solusi portabel dan bersih adalah dengan menggunakan
Extension
in Swift (aktifkan elemen yang terlihat sebelum berubah)Doa terlihat seperti ini:
► Temukan solusi ini di GitHub dan detail tambahan tentang Resep Swift .
sumber
MIT
lisensi menjamin Cocoapod Anda dapat digunakan secara bebas oleh semua orang dan siapa saja.karena iOS4 dapat dengan jelas dilakukan dengan blok:
sumber
Berikut adalah kode untuk membuatnya berfungsi.
sumber
Solusi Ekstensi UILabel
Cukup dipanggil fungsi oleh
Terima kasih untuk semua tipsnya kawan. Semoga ini bisa membantu dalam jangka panjang
sumber
Swift versi 4.2 dari solusi SwiftArchitect di atas (berfungsi dengan baik):
Doa:
sumber
Swift 2.0:
ATAU
sumber
Dengan Swift 5, Anda dapat memilih salah satu dari dua contoh kode Playground berikut untuk menganimasikan
UILabel
perubahan teks Anda dengan beberapa animasi lintas silang.# 1. Menggunakan
UIView
'stransition(with:duration:options:animations:completion:)
metode kelas# 2. Menggunakan
CATransition
danCALayer
'sadd(_:forKey:)
metodesumber
Solusi Swift 4.2 (mengambil jawaban 4.0 dan memperbarui kompilasi enum baru)
sumber
Nilai default sistem 0,25 untuk
duration
dan .curveEaseInEaseOut untuktimingFunction
sering lebih disukai untuk konsistensi di seluruh animasi, dan dapat dihilangkan:yang sama dengan menulis ini:
sumber
Ini adalah metode ekstensi C # UIView yang didasarkan pada kode @ SwiftArchitect. Ketika tata letak otomatis terlibat dan kontrol perlu bergerak tergantung pada teks label, kode panggilan ini menggunakan Superview label sebagai tampilan transisi, bukan label itu sendiri. Saya menambahkan ekspresi lambda untuk tindakan agar lebih dienkapsulasi.
Kode panggilan:
sumber
Jika Anda ingin melakukan ini
Swift
dengan penundaan, coba ini:menggunakan fungsi berikut yang dibuat oleh @matt - https://stackoverflow.com/a/24318861/1982051 :
yang akan menjadi ini di Swift 3
sumber
Ada satu solusi lagi untuk mencapai ini. Itu dijelaskan di sini . Idenya adalah fungsi subclassing
UILabel
dan overrideaction(for:forKey:)
dengan cara berikut:Contoh penggunaan:
sumber