Yang ini membuatku bingung.
Apakah mungkin untuk mengubah warna latar belakang UIButton di Cocoa untuk iPhone. Saya sudah mencoba mengatur warna latar belakang tetapi hanya mengubah sudutnya. setBackgroundColor:
tampaknya menjadi satu-satunya metode yang tersedia untuk hal-hal seperti itu.
[random setBackgroundColor:[UIColor blueColor]];
[random.titleLabel setBackgroundColor:[UIColor blueColor]];
objective-c
iphone
cocoa-touch
uibutton
dubbeat
sumber
sumber
Jawaban:
Ini dapat dilakukan secara terprogram dengan membuat replika:
edit: tentu saja, Anda harus
#import <QuartzCore/QuartzCore.h>
edit: untuk semua pembaca baru, Anda juga harus mempertimbangkan beberapa opsi yang ditambahkan sebagai "kemungkinan lain". untuk pertimbangan Anda.
Karena ini adalah jawaban lama, saya sangat menyarankan membaca komentar untuk pemecahan masalah
sumber
Saya memiliki pendekatan yang berbeda,
Dari CommonUIUtility,
Jangan lupa
#import <QuartzCore/QuartzCore.h>
sumber
btFind.layer.borderWidth = 1;
setBackgroundColor:(UIColor *) forState:(UIControlState)
.Saya berasumsi Anda sedang berbicara tentang UIButton dengan
UIButtonTypeRoundedRect
? Anda tidak dapat mengubah warna latar belakangnya. Ketika Anda mencoba mengubah warna latar belakangnya, Anda lebih suka mengubah warna persegi dengan tombol yang digambar (yang biasanya jelas). Jadi ada dua cara untuk pergi. Entah Anda membuat subkelas UIButton dan menimpa-drawRect:
metodenya atau Anda membuat gambar untuk status tombol yang berbeda (yang baik-baik saja untuk dilakukan).Jika Anda mengatur gambar latar belakang di Interface Builder, Anda harus memperhatikan bahwa IB tidak mendukung pengaturan gambar untuk semua status yang dapat dimiliki tombol, jadi saya sarankan mengatur gambar dalam kode seperti ini:
Baris terakhir menunjukkan cara mengatur gambar untuk status yang dipilih & disorot (itu yang tidak dapat diatur oleh IB). Anda tidak memerlukan gambar yang dipilih (baris 4 & 6) jika tombol Anda tidak memerlukan status yang dipilih.
sumber
CGContextSetFillColorWithColor
danCGContextFillPath
untuk mengisi jalur yang digambar olehCGContextAddArcToPoint
.forState:(UIControlStateHighlighted | UIControlStateSelected)
Cheers.Kemungkinan lain:
Namun, tombolnya persegi, dan bukan itu yang kami inginkan. Buat IBOutlet dengan referensi ke tombol ini dan tambahkan yang berikut ini ke metode viewDidLoad:
Jangan lupa untuk mengimpor QuartzCore.h
sumber
Subclass UIButton dan timpa metode setHighlighted dan setSelected
Metode darkerShade saya berada dalam kategori UIColor seperti ini
sumber
Jika Anda tidak ingin menggunakan gambar, dan ingin terlihat persis seperti gaya Rounded Rect, cobalah ini. Cukup tempatkan UIView di atas UIButton, dengan bingkai identik dan topeng ubah ukuran otomatis, setel alfa ke 0,3, dan setel latar belakang ke warna. Kemudian gunakan cuplikan di bawah untuk memotong tepi yang membulat dari tampilan hamparan berwarna. Selain itu, hapus centang pada kotak 'Interaksi Pengguna Diaktifkan' di IB di UIView untuk memungkinkan peristiwa sentuh mengalir ke tombol UIButton di bawahnya.
Salah satu efek sampingnya adalah teks Anda juga akan diwarnai.
sumber
Kemungkinan lain (imho terbaik dan terindah):
Buat UISegmentedControl dengan 2 segmen dalam warna latar belakang yang diperlukan di Interface Builder. Setel jenisnya ke 'bar'. Kemudian, ubah menjadi hanya satu segmen. Pembuat antarmuka tidak menerima satu segmen jadi Anda harus melakukannya secara terprogram.
Oleh karena itu, buat IBOutlet untuk tombol ini dan tambahkan ini ke viewDidLoad tampilan Anda:
Sekarang Anda memiliki tombol berwarna mengkilap yang indah dengan warna latar yang ditentukan. Untuk tindakan, gunakan peristiwa 'nilai berubah'.
(Saya menemukan ini di http://chris-software.com/index.php/2009/05/13/creating-a-nice-glass-buttons/ ). Terima kasih Chris!
sumber
Saya 99% persen yakin bahwa Anda tidak bisa begitu saja mengubah warna latar belakang UIButton. Sebaliknya Anda harus pergi dan mengubah sendiri gambar latar belakang yang menurut saya menyebalkan. Saya kagum bahwa saya harus melakukan ini.
Jika saya salah atau jika ada cara yang lebih baik tanpa harus mengatur gambar latar belakang tolong beri tahu saya
sumber
Sesuai saran @EthanB dan @karim membuat persegi panjang yang diisi kembali, saya baru saja membuat kategori untuk UIButton untuk mencapai ini.
Cukup masukkan kode Kategori: https://github.com/zmonteca/UIButton-PLColor
Pemakaian:
ForStates opsional untuk digunakan:
sumber
Anda juga dapat menambahkan CALayer ke tombol - Anda dapat melakukan banyak hal dengan ini termasuk overlay warna, contoh ini menggunakan lapisan warna polos Anda juga dapat dengan mudah mengubah warnanya. Berhati-hatilah meskipun lapisan yang ditambahkan mengaburkan lapisan di bawahnya
sumber
tambahkan target kedua untuk
UIButton
untukUIControlEventTouched
dan ubahUIButton
warna latar belakang. Kemudian ubah kembali keUIControlEventTouchUpInside
target;sumber
Untuk tombol yang terlihat profesional dan bagus, Anda dapat memeriksa komponen tombol kustom ini . Anda dapat menggunakannya secara langsung di tampilan dan tampilan tabel Anda atau memodifikasi kode sumber agar sesuai dengan kebutuhan Anda. Semoga ini membantu.
sumber
Ini tidak seanggun sub-classing UIButton, namun jika Anda hanya ingin sesuatu yang cepat - yang saya lakukan adalah membuat tombol kustom, lalu gambar 1px kali 1px dengan warna yang saya inginkan, dan atur latar belakang tombol ke gambar itu untuk status yang disorot - berfungsi untuk kebutuhan saya.
sumber
Saya tahu ini sudah lama ditanyakan dan sekarang ada UIButtonTypeSystem baru. Tetapi pertanyaan yang lebih baru ditandai sebagai duplikat dari pertanyaan ini jadi inilah jawaban saya yang lebih baru dalam konteks tombol sistem iOS 7, gunakan
.tintColor
properti.sumber
[myButton setBackgroundColor:[UIColor blueColor]]; [myButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
Mungkin saja mengubah cara ini atau melanjutkan Storyboard dan mengubah latar belakang pada opsi di sisi kanan.
sumber
Cepat 3:
sumber