So verblassen Sie die UIView-Hintergrundfarbe - iOS 5

Ich habe Probleme beim Versuch, eine benutzerdefinierte UIView-Klasse zum Ausblenden des Hintergrunds zu veranlassen. Ich habe die folgenden StackOverflow-Fragen geprüft, aber sie scheinen für mich nicht zu funktionieren.

Überblenden der Hintergrundfarbe von einer Farbe zur anderen in einer UIView

Wie animiert man die backgroundColor eines CALayers explizit?

Ich habe also ein benutzerdefiniertes UIView, in dem Benutzer Dinge zeichnen können. Wenn das, was sie zeichnen, falsch ist, möchte ich die Hintergrundfarbe auf Rot und dann wieder auf Weiß verblassen lassen.

Ich habe diese benutzerdefinierte Methode in der benutzerdefinierten UIView aufgerufen

- (void)indicateMistake;

Wenn ich diese Methode aufrufe, möchte ich, dass sie die Hintergrundfarbanimation ausführt, also habe ich dies in der Methode:

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"];

Aber nichts scheint zu passieren, wenn ich das tue.

Also habe ich eine alberne Rotationsanimation versucht, um zu sehen, ob es überhaupt funktioniert:

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

Aus irgendeinem Grund funktioniert das und das benutzerdefinierte UIView dreht sich.

Beim Lesen weiterer StackOverflow-Antworten habe ich Folgendes versucht:

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

Das ändert sofort die Farbe von Rot zurück zu Weiß. Manchmal ist es so schnell, dass ich es manchmal nicht sehen kann. Wenn ich das auskommentiere[self setBackgroundColor: [UIColor whiteColor]]; es bleibt rot. Aber es gibt Knoten allmählich Weiß-Rot-Effekt.

Ich habe keine Ideen mehr. Jede Hilfe wäre dankbar!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage