Интересно, возможно ли анимировать цвет заливки пути, который я нарисовал, используя CoreGraphics?Я рисую это: Простое рисование с помощью Quartz - Core Graphics
, и я хочу изменить цвет заливки с белого на, скажем, серый.Возможно ли это?
Я знаю существование свойства 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);
В порядке ли логика? И в чем здесь ошибка?; (