我正在创建一个应用程序,该应用程序使用UIImagePickerController
向用户呈现一个自定义覆盖图,其中包括摄像头上的两个网格/图案之一"查看"本身。
网格本身是UIImageView
中的.png文件,它被添加到叠加层中,它们非常复杂,所以我真的想避免在代码中绘制网格,即使这会现在我对我的问题很干净,很简单。
我希望能够提供各种颜色的网格。显而易见的解决方案是以不同的颜色创建更多.png图像,但是对于每种颜色,必须有四个单独的图像(每个网格的常规图像和视网膜),这样可以快速累加大量资产。
我认为,理想的解决方案是让我只需创建白色/灰色的网格,然后对其应用色调以对其进行适当的着色。
这可能吗?或者我是否需要寻求替代解决方案?
答案 0 :(得分:8)
感谢Ananth指点我iPhone - How do you color an image?
我已按照问题中的建议将此方法添加到我的代码中,修改了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;
}
......而且我完全得到了我之后的信息。