Я хотел бы тонировать изображение с помощью цветовой ссылки. Результаты должны выглядеть как режим смешивания Multiply в Photoshop, где белые будут заменены на оттенок :
Я буду постоянно менять значение цвета.
Продолжение: Я бы поместил код для этого в метод drawRect: метод моего ImageView, верно?
Как всегда, фрагмент кода очень помог бы в моем понимании, в отличие от ссылки.
Обновление: Подкласс UIImageView с предложенным кодом Ramin .
Я поместил это в 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
}