Je me demande s'il est possible d'animer la couleur de remplissage d'un chemin que j'ai dessiné en utilisant CoreGraphics? Je dessine ceci: Simple drawing with Quartz - Core GraphicsComment animer la couleur de remplissage du chemin tracé avec CGContextDrawPath, etc dans drawRect :?
et je veux changer sa couleur de remplissage du blanc pour dire le gris. Est-ce possible?
Je connais l'existence de la propriété view.layer.content mais est-ce utile ici? Cependant, je ne suis pas sûr comment je peux l'utiliser dans ce cas.
Merci d'avance.
Mise à jour
J'essaie cette approche (sa poussette, donc je peux dire si son aller travailler) essentiellement Je crée un CGImageRef et le transmettre à self.layer.contents qui est animable en utilisant des animations UIView mais .... Je reçois des résultats étranges, en plus de ne pas animer.
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);
La logique est-elle OK ?, et où se trouve l'erreur ici? ; (
Et comment cela animerait-il? – Eiko
Oh, je suis désolé, soit j'ai mal lu votre question ou il a été édité après. Je n'avais pas réalisé que tu essayais d'animer. Je vais modifier ma réponse pour inclure une version animable. –