为图像添加色调

zer*_*ube 5 objective-c uiimageview uiimagepickercontroller ios

我正在创建一个应用程序,用于UIImagePickerController向用户呈现一个自定义覆盖图,其中包括摄像头"视图"本身上的两个网格/图案之一.

网格本身是一个.png文件,UIImageView它被添加到叠加层中,它们非常复杂,所以我真的想避免在代码中绘制网格,即使这样我会很好地回答我的问题.

我希望能够提供各种颜色的网格.显而易见的解决方案是以不同的颜色创建更多的.png图像,但是对于每种颜色,必须有四个单独的图像(每个网格的常规图像和视网膜图像),这样可以快速累加大量资产.

我认为,理想的解决方案是让我只需创建白色/灰色的网格,然后对其应用色调以对其进行适当的着色.

那可能吗?或者我是否需要寻求替代解决方案?

zer*_*ube 8

感谢Ananth指点我的iPhone - 你如何着色图像?

我已按照问题中的建议将此方法添加到我的代码中,并在willc2的答案中进行了修改:

-(UIImage *)colorizeImage:(UIImage *)baseImage color:(UIColor *)theColor {
    UIGraphicsBeginImageContext(baseImage.size);

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGRect area = CGRectMake(0, 0, baseImage.size.width, baseImage.size.height);

    CGContextScaleCTM(ctx, 1, -1);
    CGContextTranslateCTM(ctx, 0, -area.size.height);
    CGContextSaveGState(ctx);
    CGContextClipToMask(ctx, area, baseImage.CGImage);
    [theColor set];
    CGContextFillRect(ctx, area);
    CGContextRestoreGState(ctx);
    CGContextSetBlendMode(ctx, kCGBlendModeMultiply);
    CGContextDrawImage(ctx, area, baseImage.CGImage);
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}
Run Code Online (Sandbox Code Playgroud)

......而且我正在得到我正在追求的东西.