Bir görüntüyü bir renk referansı ile renklendirmek istiyorum. Sonuçlar, beyazların renk tonuyla değiştirileceği Photoshop'taki Çoğalt karıştırma moduna benzemelidir :
Renk değerini sürekli değiştireceğim.
Takip: Bunu yapmak için kodu ImageView'umun drawRect: yöntemine koyardım, değil mi?
Her zaman olduğu gibi, bir kod parçacığı , bir bağlantıdan ziyade anlamama büyük ölçüde yardımcı olacaktır.
Güncelleme: Ramin'in önerdiği kodla bir UIImageView alt sınıflandırma .
Bunu görünüm denetleyicimin viewDidLoad: bölümüne koydum:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Görüntüyü görüyorum ama renklendirilmiyor. Ayrıca diğer görüntüleri yüklemeyi, görüntüyü IB'ye ayarlamayı ve görünüm denetleyicimde setNeedsDisplay: öğesini çağırmayı denedim.
Güncelleme : drawRect: çağrılmıyor.
Son güncelleme: Ramin'in kodunu test edebilmek için düzgün bir şekilde kurulmuş bir imageView olan eski bir proje buldum ve harika çalışıyor!
Son, son güncelleme:
Core Graphics'i yeni öğrenenler için, işte işe yarayabilecek en basit şey burada.
Alt sınıflandırılmış UIView'unuzda:
- (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
}