2013-03-06 43 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