将UIImage着色为不同的颜色,或者从矢量生成UIImage

Rya*_*ley 1 vector-graphics uiimage ios

我有一个黑色轮廓的圆圈和一个白色填充,我需要以编程方式将白色变成另一种颜色(通过UIColor).我尝试了一些其他的stackoverflow解决方案,但它们似乎都没有正常工作,只是填充外部或大纲.

我有两种方法可以做到这一点,但我不确定如何得到正确的结果:

只是白色,无论UIColor应该是什么,

要么,

从两个圆圈中创建一个UIImage,一个被填充,一个与黑色重叠.

Nat*_*sch 5

如果您决定使用两个圆圈,一个白色和一个黑色,那么您可能会觉得这很有帮助.这个方法会为你涂上一个uiimage,但是它解决了只对不透明部分进行着色的问题,这意味着如果你在圆圈周围提供透明度的png,它只会给圆形着色.因此,不是填充图像的整个24x24帧,而是仅填充不透明部分.这不完全是您的问题,但如果您使用列出的第二个选项,则可能会遇到此问题.

-(UIImage*)colorAnImage:(UIColor*)color :(UIImage*)image{

CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, image.scale);
CGContextRef c = UIGraphicsGetCurrentContext();
[image drawInRect:rect];
CGContextSetFillColorWithColor(c, [color CGColor]);
CGContextSetBlendMode(c, kCGBlendModeSourceAtop);
CGContextFillRect(c, rect);
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return result;
Run Code Online (Sandbox Code Playgroud)

}