2013-03-06 94 views
0

我试图使用CGContextSetFillColorWithColor和我从Parse数据库抓取的颜色变量对图像着色。CGContextSetFillColorWithColor不适用于颜色变量

改变影像这样的颜色正常工作:

[...] 
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白色没有问题。

但是当我尝试将其更改为十六进制颜色我从解析得到(使用十六进制颜色实用程序)是这样的:

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

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

回答

1

我有一个类似的问题,并没有找到一个直接的解决方案。对我来说,解决方案是使用我UIColor对象的-setFill方法,而不是使用中间CGColor对象:

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

感谢西莫,不幸的是我得到的错误'传递空隙CGColorRef不兼容的类型的参数(又名struct CGColor *)'当我尝试。 – ahow 2013-03-06 15:49:42

+1

你确定'-colorWithHexString'调用正在返回一个有效的UIColor对象吗? – 2013-03-06 15:51:58

+0

啊,算出来,谢谢Seamus! – ahow 2013-03-06 16:06:00