Saya memiliki UIImageView yang disebut "theImageView", dengan UIImage dalam satu warna (latar belakang transparan) seperti jantung hitam kiri di bawah ini. Bagaimana saya bisa mengubah warna rona gambar ini secara terprogram di iOS 7 atau lebih tinggi, sesuai metode rona yang digunakan dalam ikon iOS 7+ Navigation Bar?
Bisakah metode ini juga berfungsi di WatchKit untuk aplikasi Apple Watch?
UIImage
denganUIImageRenderingModeAlwaysTemplate
dan kemudian menetapkanUIImageVIew
'stintColor
APAKAH kerja. (dalam kode saya ^^)Jawaban:
iOS
Untuk aplikasi iOS, di Swift 3, 4 atau 5:
Untuk Swift 2:
Sementara itu, solusi Objective-C modern adalah:
Watchkit
Di aplikasi WatchKit untuk Apple Watch, Anda dapat mengatur warna warna untuk gambar templat .
Untuk mengatur warna warna dalam Swift 3 atau 4:
Swift 2:
Untuk kemudian mengatur warna warna di Objective-C:
Jika Anda menggunakan gambar templat dan tidak menerapkan warna warna, Global Tint untuk aplikasi WatchKit Anda akan diterapkan. Jika Anda belum menetapkan Global Tint,
theImage
akan berwarna biru muda secara default saat digunakan sebagai gambar templat.sumber
Inilah kategori yang seharusnya melakukan trik
jadi kamu akan melakukan:
sumber
Saya harus melakukan ini di Swift menggunakan
extension
.Saya pikir saya akan membagikan bagaimana saya melakukannya:
Pemakaian:
theImageView.image = theImageView.image.imageWithColor(UIColor.redColor())
Cepat 4
Pemakaian:
theImageView.image = theImageView.image?.imageWithColor(color1: UIColor.red)
sumber
color1.setFill()
tepat di bawah baris pertama dalam metode iniUIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
.CGBlendMode.Normal
sebagai gantinyaDi Storyboard dan Aset gambar. Anda dapat mengubah keduanya juga:
Perbarui Mode Render ke Templat Gambar
Perbarui Warna warna dalam Tampilan.
sumber
imageView.tintColor
kode.Cepat 4
Ubah warna UIImage SVG / PDF , yang berfungsi untuk gambar dengan warna unik :
Ubah warna UIImageView , yang berfungsi untuk gambar dengan warna unik :
Ubah warna UIImage untuk gambar , gunakan itu:
sumber
Jika ada yang peduli solusi tanpa
UIImageView
:sumber
Dengan Swift
sumber
.AlwaysTemplate
.Coba ini
http://robots.thoughtbot.com/designing-for-ios-blending-modes
atau
sumber
Untuk 3 tujuan cepat
theImageView.image = theImageView.image!.withRenderingMode(.alwaysTemplate) theImageView.tintColor = UIColor.red
sumber
Untuk mewarnai gambar UIButton
sumber
iOS
Solusi untuk melakukannya dari Interface Builder, atur param templateImage di keyPath dan pilih warna warna Anda dari IB
}
sumber
Dengan iOS 13 dan lebih baru, Anda cukup menggunakan
sumber
Manfaatkan Ekstensi dalam Swift: -
sumber
Swift 3 versi ekstensi jawaban dari fuzz
sumber
Sekarang saya menggunakan metode ini berdasarkan respons Duncan Babbage:
sumber
sumber
Subclass yang dapat digunakan dari kode dan Interface Builder juga:
sumber
Ini adalah ekstensi UIImage saya dan Anda dapat langsung menggunakan fungsi changeTintColor untuk gambar.
Contoh penggunaan seperti ini
Dan Anda dapat menggunakan
changeColor
fungsi perubahan untuk mengubah warna gambarsumber
profileImageView.image = theImageView.image! .withRenderingMode (.alwaysTemplate)
profileImageView.tintColor = UIColor.green
ATAU
Pertama pilih gambar tertentu dalam aset gambar dan kemudian pilih memerah sebagai Templat daripada Default dan setelah itu menulis baris profileImageView.tintColor = UIColor.green
sumber
jika Anda memiliki id untuk gambar SVG, Anda dapat mengisi warna sehubungan dengan ID.
ATAU Lihat contoh ini.
https://github.com/ravisfortune/SVGDEMO
sumber
sumber