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