Saya perhatikan bahwa ketika saya menempatkan putih atau hitam UIImage
ke dalam UISegmentedControl
itu secara otomatis warna topeng itu agar sesuai dengan warna kontrol tersegmentasi. Saya pikir ini sangat keren, dan bertanya-tanya apakah saya bisa melakukan ini di tempat lain juga. Sebagai contoh, saya memiliki banyak tombol yang memiliki bentuk seragam tetapi warnanya bervariasi. Alih-alih membuat PNG untuk setiap tombol, bisakah saya menggunakan masking warna ini untuk menggunakan gambar yang sama untuk mereka semua tetapi kemudian mengatur warna tint atau sesuatu untuk mengubah warna sebenarnya?
294
Jawaban:
Pada iOS 7, ada metode baru
UIImage
untuk menentukan mode rendering. Menggunakan mode renderingUIImageRenderingModeAlwaysTemplate
akan memungkinkan warna gambar dikontrol oleh warna warna tombol.Objektif-C
Cepat
sumber
tintColor
terlalu gelap, pastikanadjustsImageWhenHighlighted
TIDAK. (Atau dalam IB: "Gambar yang Disorot Menyoroti" tidak dicentang.)Seperti yang sudah disebutkan Ric di postingannya, Anda dapat mengatur mode render dalam kode, Anda juga dapat melakukan ini secara langsung di katalog gambar, lihat gambar terlampir di bawah ini. Cukup atur
Render As
keTemplate Image
Peringatan Saya punya masalah dengan iOS 7 dan pendekatan ini. Jadi jika Anda menggunakan iOS 7 juga Anda mungkin ingin melakukannya dalam kode juga untuk memastikan, seperti dijelaskan di sini .
sumber
Tombol Kustom muncul dalam warna gambar masing-masing. Mengatur jenis tombol ke "System" di storyboard (atau ke
UIButtonTypeSystem
dalam kode), akan membuat gambar tombol dengan warna warna default.(diuji pada iOS9, Xcode 7.3)
sumber
Anda harus mengatur mode rendering gambar
UIImageRenderingModeAlwaysTemplate
agar dapattintColor
mempengaruhi UIImage. Inilah solusinya di Swift:SWIFT 4x
sumber
Jika Anda memiliki tombol khusus dengan gambar latar belakang. Anda dapat mengatur warna warna tombol Anda dan menimpa gambar dengan mengikuti.
Dalam aset pilih latar belakang tombol yang ingin Anda atur warna warna.
Pada pemeriksa atribut gambar atur nilai render ke "Template Image"
Sekarang setiap kali Anda mengatur
button.tintColor = UIColor.red
tombol Anda akan ditampilkan dalam warna merah.sumber
Di Swift Anda dapat melakukannya seperti:
Kemudian di viewDidLoad Anda
Dan untuk memodifikasi warnanya
EDIT Xcode 8 Sekarang Anda bisa juga hanya modus render gambar di .xcassets Anda untuk Template Gambar dan kemudian Anda tidak perlu secara khusus menyatakan hal itu dalam
var exampleImage
lagisumber
Tidak yakin persis apa yang Anda inginkan tetapi metode kategori ini akan menutupi UIImage dengan warna yang ditentukan sehingga Anda dapat memiliki satu gambar dan mengubah warnanya menjadi apa pun yang Anda inginkan.
ImageUtils.h
ImageUtils.m
Impor kategori ImageUtils dan lakukan sesuatu seperti ini ...
sumber
kCGBitmapAlphaInfoMask & kCGImageAlphaPremultipliedLast
padaCGBitmapContextCreate
UIDevice
kelas:CGFloat scale = [UIScreen mainScreen].scale; CGFloat width = self.size.width * scale; CGFloat height = self.size.height * scale;
Thescale
properti ada sebagai iOS 4.0.scale
nilai saatUIImage
dibuat:UIImage *coloredImage = [UIImage imageWithCGImage:cImage scale:scale orientation:self.imageOrientation];
Swift 4 dengan customType:
sumber
Untuk Xamarin.iOS (C #):
sumber
Swift 3 :
Solusi ini bisa nyaman jika Anda telah mengatur gambar Anda melalui pembangun antarmuka xCode. Pada dasarnya Anda memiliki satu ekstensi untuk mewarnai gambar:
Kemudian, Anda dapat menyiapkan ekstensi UIButton ini untuk mewarnai gambar untuk kondisi tertentu:
Pemakaian:
PS (berfungsi baik juga dalam sel tabel, Anda tidak perlu memanggil
setNeedDisplay()
metode, perubahan warna langsung karena ekstensi UIImage ..sumber
Jika Anda ingin secara manual menyamarkan gambar Anda, berikut adalah kode yang diperbarui yang berfungsi dengan layar retina
sumber
Kamu harus mencobanya
Setelah Mengatur Frame
sumber
Swift 3.0
sumber
Ubah gambar tombol atau tampilan gambar warna warna Swift:
sumber
Tidak satu pun di atas yang berfungsi untuk saya, karena warna dihapus setelah klik. Saya harus menggunakan
sumber