Cómo atenuar el color de fondo de UIView - iOS 5

Estoy teniendo problemas tratando de obtener una clase UIView personalizada para desvanecer su fondo. He comprobado las siguientes preguntas de StackOverflow pero no parecen funcionar para mí.

Desvanecer el color de fondo de un color a otro en una vista UIV

¿Cómo animar explícitamente el color de fondo de un CALayer?

Así que tengo un UIView personalizado donde los usuarios pueden dibujar cosas. Si lo que dibujan es incorrecto, quiero que el color de fondo se torne rojo y luego blanco.

Tengo este método personalizado en el UIView personalizado llamado

- (void)indicateMistake;

Cuando llamo a ese método, quiero que realice la animación de color de fondo, así que tengo esto en el método:

CABasicAnimation* fade = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
fade.fromValue = (id)[UIColor whiteColor].CGColor;
fade.toValue = (id)[UIColor redColor].CGColor;
[fade setDuration:3];
[self.layer addAnimation:fade forKey:@"fadeAnimation"];

Pero nada parece suceder cuando hago eso.

Entonces probé una animación de rotación tonta para ver si funciona:

CABasicAnimation* rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotate.toValue = [NSNumber numberWithInt:M_PI];
[rotate setDuration:1];
[self.layer addAnimation:rotate forKey:@"rotateAnimation"];

Por alguna razón eso funciona y el UIView personalizado rota.

Luego, leyendo más respuestas de StackOverflow, intenté esto:

[UIView animateWithDuration:3 animations:^{
    [self setBackgroundColor: [UIColor redColor]];
} completion:^(BOOL finished) {
    [self setBackgroundColor: [UIColor whiteColor]];
}];

Eso cambia el color de rojo y luego vuelve a blanco inmediatamente. A veces es tan rápido que a veces no puedo ver que suceda. Si yo comento el[self setBackgroundColor: [UIColor whiteColor]]; se queda roja. Pero hay nodo gradual de blanco a rojo efecto.

Me he quedado sin ideas ... Cualquier ayuda sería apreciada!

Respuestas a la pregunta(3)

Su respuesta a la pregunta