Tujuan sederhana saya adalah memudarkan fungsi persembunyian dan tampilan yang hidup.
Button.hidden = YES;
Cukup sederhana. Namun, mungkinkah membuatnya menghilang daripada hanya menghilang? Terlihat agak tidak profesional seperti itu.
sumber
Tujuan sederhana saya adalah memudarkan fungsi persembunyian dan tampilan yang hidup.
Button.hidden = YES;
Cukup sederhana. Namun, mungkinkah membuatnya menghilang daripada hanya menghilang? Terlihat agak tidak profesional seperti itu.
Di iOS 4 dan yang lebih baru, ada cara untuk melakukan ini hanya dengan menggunakan metode transisi UIView tanpa perlu mengimpor QuartzCore. Anda bisa mengatakan:
[UIView transitionWithView:button
duration:0.4
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
button.hidden = YES;
}
completion:NULL];
UIView.transition(with: button, duration: 0.4,
options: .transitionCrossDissolve,
animations: {
button.hidden = false
})
Solusi Michail akan berhasil, tetapi itu sebenarnya bukan pendekatan terbaik.
Masalah dengan alpha fading adalah kadang-kadang lapisan tampilan yang tumpang tindih yang berbeda terlihat aneh saat mereka memudar. Ada beberapa alternatif lain menggunakan Core Animation. Pertama, sertakan kerangka kerja QuartzCore di aplikasi Anda dan tambahkan #import <QuartzCore/QuartzCore.h>
ke tajuk Anda. Sekarang Anda dapat melakukan salah satu dari yang berikut:
1) atur button.layer.shouldRasterize = YES;
dan kemudian gunakan kode animasi alfa yang diberikan Michail dalam jawabannya. Ini akan mencegah lapisan dari campuran aneh, tetapi memiliki penalti kinerja yang sedikit, dan dapat membuat tombol terlihat buram jika tidak selaras tepat pada batas piksel.
Kalau tidak:
2) Gunakan kode berikut untuk menghidupkan fade sebagai gantinya:
CATransition *animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = 0.4;
[button.layer addAnimation:animation forKey:nil];
button.hidden = YES;
Yang menyenangkan tentang pendekatan ini adalah Anda dapat melakukan crossfade properti apa pun dari tombol meskipun mereka tidak dapat digerakkan (mis. Teks atau gambar tombol), cukup atur transisi dan kemudian atur properti Anda segera setelahnya.
transitionWithView
parameter untuk memastikan keberhasilan memudar dan keluar.Properti animasi UIView adalah:
isHidden
bukan salah satu dari mereka, jadi seperti yang saya lihat, cara terbaik adalah:Swift 4:
Sasaran C:
sumber
Untuk menghilang:
Objektif-C
Cepat 2
Swift 3, 4, 5
Untuk memudar di:
Objektif-C
Cepat 2
Swift 3, 4, 5
sumber
Saya menggunakan ekstensi Swift 3 kecil ini :
sumber
Cepat 3
sumber
cepat 4.2
dengan ekstensi:
metode sederhana:
sumber
Gunakan solusi ini untuk efek fadeOut dan fadeIn yang halus
penggunaannya seperti
Terima kasih
sumber
fadeOut
bekerja di iOS 13 hanya jika saya menghapus garis yang ditetapkanself.isHidden
.Aku menciptakan kategori
UIView
untuk tujuan ini dan menerapkan sedikit khusus menggigit konsep yang berbeda:visibility
. Perbedaan utama dari solusi saya adalah Anda dapat menelepon[view setVisible:NO animated:YES]
dan segera setelah itu memeriksa[view visible]
dan mendapatkan hasil yang benar. Ini cukup sederhana tetapi sangat bermanfaat.Selain itu, diperbolehkan untuk menghindari menggunakan "logika boolean negatif" (lihat Kode Lengkap, halaman 269, Gunakan nama variabel boolean positif untuk informasi lebih lanjut).
Cepat
UIView+Visibility.swift
Objektif-C
UIView+Visibility.h
UIView+Visibility.m
sumber
kode @Umair Afzal bekerja dengan baik di swift 5 setelah beberapa perubahan
untuk digunakan
sumber
Cepat 4
Dan untuk menggunakannya, panggil fungsi-fungsi ini seperti:
sumber
isHidden
adalah nilai langsung dan Anda tidak dapat mempengaruhi animasi di atasnya, alih-alih ini Anda dapat menggunakan Alpha untuk menyembunyikan tampilan AndaDan untuk menunjukkan:
sumber
Anda dapat melakukannya dengan SANGAT mudah menggunakan perpustakaan Animatics :
sumber
sumber
Anda bisa mencoba ini.
Dan berikan nama tampilan Anda
sumber
Jika tampilan Anda disetel ke tersembunyi secara default atau Anda mengubah status Tersembunyi yang menurut saya harus Anda lakukan dalam banyak kasus, maka tidak ada pendekatan di halaman ini yang akan memberi Anda animasi FadeIn / FadeOut, itu hanya akan menganimasikan salah satu dari status ini, alasannya adalah Anda mengatur status Tersembunyi ke false sebelum memanggil metode UIView.animate yang akan menyebabkan visibilitas mendadak dan jika Anda hanya menghidupkan alpha maka ruang objek masih ada tetapi tidak terlihat yang akan mengakibatkan beberapa masalah UI.
Jadi pendekatan terbaik adalah memeriksa dulu jika tampilan disembunyikan lalu atur alpha menjadi 0,0, seperti ini saat Anda mengatur status Tersembunyi menjadi false Anda tidak akan melihat visibilitas mendadak.
sumber
Fungsi UIView.transition (with :) bagus dan rapi.
Banyak yang mempostingnya tetapi tidak ada yang menyadari bahwa ada kesalahan yang akan muncul hanya ketika Anda menjalankannya.
Anda dapat mentransisikan properti tersembunyi ke true dengan sempurna, sedangkan saat Anda mencoba mengalihkannya ke false, tampilan akan menghilang secara tiba-tiba tanpa animasi.
Itu karena api ini hanya berfungsi dalam tampilan, yang berarti ketika Anda mentransisikan tampilan untuk ditampilkan, sebenarnya itu langsung ditampilkan, hanya kontennya yang keluar secara bertahap.
Ketika Anda mencoba untuk menyembunyikan tampilan ini, itu sendiri bersembunyi segera, membuat animasi menjadi isinya tidak berarti.
Untuk mengatasi ini, saat menyembunyikan tampilan, target transisi haruslah tampilan induknya, bukan tampilan yang ingin Anda sembunyikan.
sumber
Solusi saya untuk Swift 3 . Jadi, saya membuat fungsi, yang menyembunyikan / menyembunyikan tampilan dalam urutan yang benar (ketika menyembunyikan - set alpha ke 0 dan kemudian IsHidden ke true; unhiding - pertama mengungkapkan view dan kemudian mengatur alpha ke 1):
sumber
completion
blok ada animasi lain ketikahide
itu salah?Swift 4 Transition
Jika Anda menggunakan pendekatan untuk versi cepat swift Anda akan mendapatkan kesalahan:
Referensi yang berguna .
sumber
isHidden
nilai diberikan langsung (yaitu, langsung bersembunyi / menampilkan tampilan).sumber
Mencoba beberapa jawaban yang keluar, beberapa hanya berfungsi untuk satu situasi, beberapa dari mereka perlu menambahkan dua fungsi.
Pilihan 1
Tidak ada hubungannya dengan
view.isHidden
.Kemudian lulus
isFadeIn
(true
ataufalse
)pilihan 2
Jangan melewati parameter apa pun. Itu memudar masuk atau keluar menurut
isUserInteractionEnabled
. Ini juga cocok dengan situasi menghidupkan dan bolak-balik dengan sangat baik.Lalu kamu menelepon
Itu dia. Biaya saya kapan saja, semoga membantu seseorang.
sumber