Warna teks judul UIButton

Jawaban:

438

menggunakan

Objektif-C

[headingButton setTitleColor:[UIColor colorWithRed:36/255.0 green:71/255.0 blue:113/255.0 alpha:1.0] forState:UIControlStateNormal];

Cepat

headingButton.setTitleColor(.black, for: .normal)
Amit Singh
sumber
2
ini bekerja. tetapi kode dalam pertanyaan asli juga sering berhasil. Adakah yang tahu mengapa hanya judul yang terkadang gagal merespons kode dalam pertanyaan?
crgt
7
Alasannya adalah bahwa ketika tombol diklik atau mengubah keadaan, kode pada tombol mengatur ulang properti titleLabel agar sesuai dengan pengaturan internal yang dimiliki tombol untuk keadaan itu.
psycotica0
1
dokumentasi apple menyatakan sebagai berikut: "Jangan gunakan objek label untuk mengatur warna teks atau warna bayangan. Sebagai gantinya, gunakan setTitleColor: forState: dan setTitleShadowColor: forState: metode kelas ini untuk membuat perubahan tersebut." Tidak ada penjelasan nyata tentang "mengapa".
clauswey
PALING PENTING ketika Anda mengatur warna untuk UIControlStateNormal, tidak perlu mengaturnya untuk semua status lainnya (jika Anda ingin tombol Anda terlihat sama ketika ditekan).
drpawelo
cara mengubah warna teks tombol secara global dalam delegasi aplikasi. Mungkin menggunakan UIButton.appearance (). SetTitleColor?
Awais Fayyaz
5

Saya membuat kelas khusus MyButton dari UIButton. Kemudian menambahkan ini di dalam Identity Inspector:

masukkan deskripsi gambar di sini

Setelah ini, ubah jenis tombol ke Kustom :

masukkan deskripsi gambar di sini

Kemudian Anda dapat mengatur atribut like textColordan UIFontuntuk Anda UIButtonuntuk status yang berbeda:

masukkan deskripsi gambar di sini

Lalu saya juga membuat dua metode di dalam MyButtonkelas yang harus saya panggil di dalam kode saya ketika saya ingin UIButtonditampilkan sebagai disorot:

- (void)changeColorAsUnselection{
    [self setTitleColor:[UIColor colorFromHexString:acColorGreyDark] 
               forState:UIControlStateNormal & 
                        UIControlStateSelected & 
                        UIControlStateHighlighted];
}

- (void)changeColorAsSelection{
    [self setTitleColor:[UIColor colorFromHexString:acColorYellow] 
               forState:UIControlStateNormal & 
                        UIControlStateHighlighted & 
                        UIControlStateSelected];
}

Anda harus mengatur titleColoruntuk normal, sorot dan dipilih UIControlStatekarena bisa ada lebih dari satu negara pada suatu waktu sesuai dengan dokumentasi UIControlState. Jika Anda tidak membuat metode ini, UIButtonakan menampilkan seleksi atau penyorotan tetapi mereka tidak akan tinggal di UIColorsetup Anda di dalam UIInterface Builderkarena mereka hanya tersedia untuk tampilan pendek pilihan, bukan untuk menampilkan pilihan itu sendiri.

Alex Cio
sumber
Tidak harus kode terakhir potongan menggunakan |bukan &?
130e13a
5

Dalam Swift:

Mengubah warna teks label sangat berbeda dari mengubahnya untuk a UIButton. Untuk mengubah warna teks untuk UIButtonpenggunaan metode ini:

self.headingButton.setTitleColor(UIColor(red: 107.0/255.0, green: 199.0/255.0, blue: 217.0/255.0), forState: UIControlState.Normal)
Prashant chaudhary
sumber
0

versi cepat 5:

Dengan menggunakan warna bawaan bawaan:

  1. button.setTitleColor(UIColor.green, for: .normal)

ATAU

Anda dapat menggunakan warna khusus dengan menggunakan metode RGB:

  1. button.setTitleColor(UIColor(displayP3Red: 0.0/255.0, green: 180.0/255.0, blue: 2.0/255.0, alpha: 1.0), for: .normal)
NickCoder
sumber