我想知道是否可以使用CoreGraphics繪製的路徑的填充顏色動畫? 我正在繪製: Simple drawing with Quartz - Core Graphics如何在drawRect中爲使用CGContextDrawPath等繪製的路徑填充顏色?
我想將其填充顏色從白色改爲灰色。 這可能嗎?
我知道view.layer.content屬性的存在,但在這裏有用嗎?雖然,我不確定在這種情況下如何使用它。
在此先感謝。
更新
我想這種方式(其越野車,所以我可以告訴大家,如果它去上班) 基本上我創建一個CGImageRef,並把它傳遞給self.layer.contents這是動畫 使用UIView動畫,但....我得到奇怪的結果,除了不是動畫。
int bitsPerComponent = 8;
int channels = 4;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
void *data = malloc(self.bounds.size.width*self.bounds.size.height*channels);
CGContextRef context = CGBitmapContextCreate(data, //pointer to data
self.bounds.size.width, //width
self.bounds.size.height, //height
bitsPerComponent, //bitsPerComponent
self.bounds.size.width*channels,//bytesPerRow
colorSpace, //colorSpace
kCGImageAlphaPremultipliedFirst); //bitmapInfo
//method that uses below link's code
[self _drawBackgroundInContext:context color:UIColorFromMandalaBoxType(type)];
CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, //info, NULL
data, //pointer to data
self.bounds.size.width*self.bounds.size.height*channels, //number of bytes
NULL); //release callback
CGImageRef image = CGImageCreate(self.bounds.size.width, //width
self.bounds.size.height, //height
bitsPerComponent, //bitsPerComponent
bitsPerComponent*channels, //bitsPerPixel
self.bounds.size.width*channels, //bytesPerRow
colorSpace, //colorSpace
kCGImageAlphaPremultipliedFirst, //bitmapInfo
dataProvider, NULL, false, kCGRenderingIntentDefault);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5f];
self.layer.contents = (id)image;
[UIView commitAnimations];
CGImageRelease(image);
CGDataProviderRelease(dataProvider);
CGContextRelease(context);
free(data);
CGColorSpaceRelease(colorSpace);
是邏輯好嗎?,這裏的錯誤在哪裏? (
那該怎麼做動畫? – Eiko 2010-11-08 23:47:53
哦,對不起,要麼我誤讀了你的問題,要麼以後編輯過。我沒有意識到你正在嘗試製作動畫。我會編輯我的答案以包含一個動畫版本。 – 2010-11-09 02:31:51