我想用颜色参考为图像着色。结果应该看起来像 Photoshop 中的 Multiply 混合模式,其中白色将替换为tint:
我将不断改变颜色值。
跟进:我会将执行此操作的代码放在 ImageView 的 drawRect: 方法中,对吗?
与往常一样,代码片段将极大地帮助我理解,而不是链接。
更新:使用Ramin建议的代码对 UIImageView 进行子类化。
我把它放在我的视图控制器的 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
}