Saya ingin mewarnai gambar dengan referensi warna. Hasilnya akan terlihat seperti mode pencampuran Multiply di Photoshop, di mana warna putih akan diganti dengan warna :
Saya akan mengubah nilai warna terus menerus.
Tindak lanjut: Saya akan meletakkan kode untuk melakukan ini di metode drawRect: ImageView saya, bukan?
Seperti biasa, potongan kode akan sangat membantu pemahaman saya, bukan tautan.
Pembaruan: Subclassing UIImageView dengan kode yang disarankan Ramin .
Saya meletakkan ini di viewDidLoad: dari pengontrol tampilan saya:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Saya melihat gambarnya, tetapi gambar itu tidak diwarnai. Saya juga mencoba memuat gambar lain, mengatur gambar di IB, dan memanggil setNeedsDisplay: di pengontrol tampilan saya.
Pembaruan : drawRect: tidak dipanggil.
Pembaruan terakhir: Saya menemukan proyek lama yang memiliki imageView diatur dengan benar sehingga saya dapat menguji kode Ramin dan bekerja seperti pesona!
Pembaruan terakhir, pembaruan terakhir:
Bagi Anda yang baru belajar tentang Core Graphics, berikut adalah hal paling sederhana yang mungkin bisa berfungsi.
Di subclass UIView Anda:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColor(context, CGColorGetComponents([UIColor colorWithRed:0.5 green:0.5 blue:0 alpha:1].CGColor)); // don't make color too saturated
CGContextFillRect(context, rect); // draw base
[[UIImage imageNamed:@"someImage.png"] drawInRect: rect blendMode:kCGBlendModeOverlay alpha:1.0]; // draw image
}