CGContextSetFillColorWithColor不使用传入的颜色变量

时间:2013-03-06 15:34:59

标签: ios objective-c

我正在尝试使用CGContextSetFillColorWithColor和我从Parse数据库中抓取的颜色变量为图像着色。

以这种方式更改图像的颜色可以正常工作:

[...]
UIImage *image = [UIImage imageNamed:@"menuButton.png"];
CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToMask(context, rect, image.CGImage);
CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]);
[...]

将menuButton.png更改为白色没问题。

但是当我尝试将它改为我从Parse(使用十六进制颜色实用程序)这样的十六进制颜色时:

self.bgColor = [post objectForKey:@"bgColor"]; //bgColor = "#ffffff"
[...]
CGContextSetFillColorWithColor(context,
   [[UIColor colorWithHexString:self.bgColor] CGColor]);

图像不再出现。这是指针问题吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我遇到过类似的问题但没有找到直接的解决方案。我的解决方案是在-setFill对象上使用UIColor方法,而不是使用中间CGColor对象:

[[UIColor colorWithHexString:self.bgColor] setFill];