Я хочу подкрасить изображение с помощью цветовой ссылки. Результат должен выглядеть как режим смешивания Multiply в Photoshop, где белые цвета будут заменены оттенком :
Я буду постоянно менять значение цвета.
Дальнейшие действия: я бы поместил код для этого в метод drawRect: моего ImageView, верно?
Как всегда, в моем понимании мне очень помогли бы фрагменты кода , а не ссылка.
Обновление: создание подкласса UIImageView с кодом, предложенным Рамином .
Я поместил это в viewDidLoad: моего контроллера представления:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Я вижу изображение, но оно не тонируется. Я также попытался загрузить другие изображения, установить изображение в IB и вызвать setNeedsDisplay: в моем контроллере представления.
Обновление : drawRect: не вызывается.
Последнее обновление: я нашел старый проект, в котором был правильно настроен imageView, чтобы я мог протестировать код Рамина, и он работает как шарм!
Финальное, окончательное обновление:
Для тех из вас, кто только изучает Core Graphics, вот самая простая вещь, которая могла бы сработать.
В вашем подклассе UIView:
- (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
}