Di iOS 6 SDK saya menulis baris kode berikut untuk menampilkan gambar di dalam tombol:
NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"];
NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2];
UIImage *thumb2 = [UIImage imageWithData:thumbData2];
[btn2 setImage:thumb2 forState:UIControlStateNormal];
[self.view addSubview:btn2];
Tetapi sekarang dengan Xcode 5 dan iOS 7 ini tidak berfungsi. Tombol tidak mengandung gambar. Tombol diisi dengan warna biru.
Jawaban:
Di iOS7 ada jenis tombol baru yang disebut UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS (7_0), // tombol sistem standar
Periksa file .xib Anda dan ubah jenis tombol menjadi Kustom
Untuk melakukan ini secara pemrograman, tambahkan baris ini ke
viewDidLoad
:sumber
[myUIButton setImage: [[UIImage imageNamed: @"myButtonImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal] forState: UIControlStateNormal];
(dengan jenis tombol yang diatur ke "Sistem" di IB).Tampaknya iOS 7 menggunakan gambar yang disediakan hanya sebagai topeng Alpha untuk menampilkan warna warna tombol. Mengubah jenis tombol untuk
UIButtonTypeCustom
melakukan trik untuk saya (terima kasih user716216!). Mengatur gambar sebagai latar belakang tidak selalu berfungsi jika Anda sudah memiliki gambar latar belakang, seperti kasus saya.sumber
Swift 3, 4, 5:
sumber
Ada kemungkinan bagus bahwa gambar itu ada di sana dan Anda tidak bisa melihatnya. Coba ubah jenis tombol menjadi
UIButtonTypeCustom
. Jika itu tidak berhasil, atur warna latar belakang tombol ke[UIColor clearColor];
sumber
Masalahnya adalah TintColor. Secara default, iOS melempar warna warna biru di atas setiap tombol. Anda dapat mengatasinya melalui 3 cara.
Ubah warna rona.
[button setTintColor:[UIColor blackColor]];
Ini dapat mewarnai gambar Anda dengan cara yang tidak Anda inginkan.Seperti kebanyakan saran lainnya, atur gambar latar belakang.
[button setBackgroundImage:[UIImage...]];
Tambahkan UIImageView ke tombol Anda.
UIImageView * img = [[UIImageView alloc] initWithImage:[UIImage...]];
[button addSubView:img];
sumber
Untuk cepat:
sumber
Saya memiliki masalah yang sama. Di storyboard saya, saya memiliki tombol tanpa gambar.
Saya kemudian akan menetapkan gambar dalam kode.
IOS 7 datang dan saya mendapat banyak gambar biru.
Resolusi itu sederhana namun membingungkan. Jika saya menetapkan gambar apa pun di storyboard dan kemudian mengubah gambar pada saat run time berfungsi dengan baik.
Anda selalu harus menentukan gambar awal di storyboard bahkan jika Anda tidak akan menggunakannya.
sumber
Ini berhasil untuk saya
Catatan: Hapus gambar depan sebelum melakukan ini.
sumber
Utas lama, tetapi saya ingin berpadu karena saya hanya memiliki masalah yang sama. Masalahnya adalah Anda menelepon setImage ketika Anda harus memanggil setBackgroundImage.
sumber
Tak satu pun dari solusi yang diberikan bekerja untuk saya. Jika Anda tidak menetapkan gambar awal di Storyboard, Anda masih dapat mengubah gambar tombol dengan menggunakan
setBackgroundImage
.Sebagai contoh Anda, hanya perubahan kecil yang diperlukan.
sumber
Masalah ini disebut masalah warna biru dari tombol dalam xcode. Ketika kita membuat tombol dengan kode tombol menunjukkan warna warna biru secara default. Ini dapat diselesaikan dengan menetapkan warna warna menjadi hitam atau putih sesuai dengan warna sel Anda. Kode tersebut adalah:
sumber
Menggunakan Xcode 9.2 tidak ada solusi di atas yang bekerja untuk apa yang saya cari.
Saya sedang mencari solusi yang akan memungkinkan saya mengatur
.normal
dan.selected
UIControlState
gambar di dalam storyboard untuk mode rendering asli mereka , tetapi, di dalam file Swift, tidak ada string string yang seharusnya ada mengenai nama-nama gambar.Pada dasarnya, di dalam kode Anda, Anda akan mendapatkan gambar yang Anda atur di dalam storyboard Anda untuk
.normal
negara dan render kembali sebagai.alwaysOriginal
(Sama untuk.selected
negara), lalu, Anda akan mengatur gambar itu (yang sekarang diterjemahkan sebagai asli dan tidak akan terpengaruh oleh warna) untuk negara bagian yang relevan (.normal
dan.selected
) AndaUIButton
.Ini dia:
Dengan cara ini Anda dapat mengatur status gambar tombol Anda dan jika nama gambar akan berubah, itu tidak akan mempengaruhi kode Anda.
sumber
Di iOS 13 - cukup atur properti Tint ke White, sambil tetap menggunakan jenis UIButton sebagai Kustom
sumber
menjadikan warna rona sebagai warna jernih untuk keempat negara bagian (Default, Highlighted, terpilih, dinonaktifkan) bekerja untuk saya.
sumber
Di Swift 4 , inisialisasi
UIButton
dan tetapkan Data gambar Anda sebagai berikut:sumber