Di aplikasi iPhone saya, saya memiliki UIButton yang saya buat di Interface Builder. Saya dapat berhasil mengaktifkan dan menonaktifkannya seperti ini dalam kode saya ...
sendButton.enabled = YES;
atau
sendButton.enabled = NO;
Namun, tampilan visual tombol selalu sama! Itu tidak pudar atau abu-abu. Jika saya mencoba mengkliknya, itu diaktifkan atau dinonaktifkan seperti yang diharapkan. Apakah saya melewatkan sesuatu? Bukankah seharusnya terlihat pudar atau abu-abu?
ios
iphone
cocoa-touch
uibutton
Andy A
sumber
sumber
Jawaban:
Anda dapat menggunakan kode berikut:
sumber
hanya mengubah konfigurasi negara untuk menonaktifkan dan memilih apa yang Anda inginkan, gambar latar belakang untuk keadaan dinonaktifkan
sumber
Pilihan lain adalah mengubah warna teks (menjadi abu-abu terang misalnya) untuk keadaan dinonaktifkan.
Di editor papan cerita, pilih
Disabled
dariState Config
tombol sembulan. GunakanText Color
tombol sembulan untuk mengubah warna teks.Dalam kode, gunakan
-setTitleColor:forState:
pesan.sumber
Cobalah untuk mengatur gambar yang berbeda untuk
UIControlStateDisabled
(gambar abu-abu dinonaktifkan) danUIControlStateNormal
(Gambar normal) sehingga tombol menghasilkan negara dinonaktifkan untuk Anda.sumber
[ UIButton setAttributedTitle:forState:]
. Buat string yang dikaitkan dengan Anda di mana warna latar depan teks Anda diatur ke warna transparan.Untuk membuat tombol pudar saat menonaktifkan, Anda dapat mengatur alpha untuk itu. Ada dua opsi untuk Anda:
Cara pertama : Jika Anda ingin menerapkan semua tombol di aplikasi Anda, maka Anda dapat menulis
extension
untuk UIButton seperti ini:Cara kedua : Jika Anda hanya ingin menerapkan beberapa tombol di aplikasi Anda, maka Anda dapat menulis kelas khusus dari UIButton seperti di bawah ini dan menggunakan kelas ini yang ingin Anda terapkan:
sumber
Jika Anda menggunakan tombol teks, Anda dapat memasukkan viewDidLoad metode instance
contoh:
sumber
Anda dapat menggunakan
adjustsImageWhenDisabled
yang merupakan properti dariUIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
Ex:
sumber
Ini adalah pertanyaan yang cukup lama tetapi ada banyak cara sederhana untuk mencapai ini.
myButton.userInteractionEnabled = false
Ini hanya akan menonaktifkan gerakan sentuh apa pun tanpa mengubah tampilan tombol
sumber
Dalam Swift :
atau
sumber
Diatur
title color
untuk status yang berbeda:Penggunaan: (warna teks akan berubah secara otomatis)
sumber
Buat ekstensi di Swift> 3.0 daripada masing-masing tombol dengan sendirinya
sumber
Anda dapat menggunakan kedua jawaban pertama dan akan menjadi hasil yang lebih baik.
Di pemeriksa atribut (ketika Anda memilih tombol), ubah State Config ke Disabled untuk mengatur gambar baru yang akan muncul ketika dinonaktifkan (hapus penanda di Content-> Diaktifkan centang untuk membuatnya dinonaktifkan) .
Dan ketika Anda mengubah status ke diaktifkan, gambar akan memuat yang dari keadaan ini.
Menambahkan logika alfa ke ini adalah detail yang bagus.
sumber
Swift 4+
Cara Penggunaan
sumber
Saya terjebak pada masalah yang sama. Pengaturan alpha bukan yang saya inginkan.
UIButton
memiliki " gambar latar belakang " dan " warna latar belakang ". Untuk gambar,UIButton
memiliki properti sebagai@property (nonatomic) BOOL adjustsImageWhenDisabled
Dan gambar latar belakang dibuat lebih terang saat tombol dinonaktifkan. Untuk warna latar belakang, pengaturan alfa, solusi Ravin, berfungsi dengan baik.
Pertama, Anda harus memeriksa apakah Anda telah mencentang kotak "nonaktifkan menyesuaikan gambar" di bawah Utilities-Attributes.
Kemudian, periksa warna latar belakang untuk tombol ini.
(Semoga bermanfaat. Ini adalah posting lama; semuanya mungkin telah berubah di Xcode).
sumber
Sepertinya kode berikut berfungsi dengan baik. Tetapi dalam beberapa kasus, ini tidak berhasil.
Jika kode di atas tidak berfungsi, silakan bungkus di Utas Utama. begitu
jika Anda pergi dengan cepat, seperti ini
Selain itu, jika Anda mengkustomisasi UIButton, tambahkan ini ke kelas Button.
Terima kasih dan nikmati pengkodean !!!
sumber
Jika
UIButton
berada dalam keadaan gabungan dariselected
dandisabled
, keadaannya adalahUIControlStateSelected | UIControlStateDisabled
.Jadi negaranya perlu disesuaikan seperti ini:
Salah satu pendekatan adalah dengan subkelas
UIButton
sebagai berikut:sumber
Pertanyaan ini memiliki banyak jawaban tetapi semuanya terlihat tidak terlalu berguna jika Anda benar-benar ingin menggunakan backgroundColor untuk menata tombol Anda. UIButton memiliki opsi bagus untuk mengatur gambar yang berbeda untuk status kontrol berbeda tetapi tidak ada fitur yang sama untuk warna latar belakang. Jadi salah satu solusinya adalah menambahkan ekstensi yang akan menghasilkan gambar dari warna dan menerapkannya pada tombol.
Hanya satu masalah dengan solusi ini - perubahan ini tidak akan diterapkan pada tombol yang dibuat di storyboard. Bagi saya itu bukan masalah karena saya lebih suka gaya UI dari kode. Jika Anda ingin menggunakan storyboard maka beberapa sihir tambahan dengan
@IBInspectable
.Opsi kedua adalah subkelas tetapi saya lebih suka menghindari ini.
sumber
Mungkin Anda bisa mensubklasifikasikan tombol Anda dan mengganti variabel isEnabled Anda. Keuntungannya adalah Anda dapat menggunakan kembali di banyak tempat.
sumber
.h:
sumber