Core Animation ermöglicht benutzerdefinierte Animationen durch die actionForKey Methode in Ihrer CALayer basierte Klasse der Umsetzung:Wie kann ich benutzerdefinierte Animationen für OnOrderOut in Core Animation verwenden?
- (id<CAAction>)actionForKey:(NSString *)key {
// Custom animations
return [super actionForKey:key];
}
ich dann eine Animation erstellen und senden Sie es für die onOrderIn
Aktion (dh, wenn die Schicht auf eine andere Schicht hinzugefügt wird) . Das funktioniert gut. Wenn ich dasselbe für onOrderOut
tue (d. H. Der Layer wird aus seinem Superlayer entfernt), wird die zurückgegebene Animation ignoriert und stattdessen die Standardanimation angewendet.
Mein Ziel ist es, die Schicht in (onOrderIn
) und aus (onOrderOut
) zu vergrößern:
- (id<CAAction>)actionForKey:(NSString *)key {
if ([key isEqualToString:@"onOrderIn"] || [key isEqualToString:@"onOrderOut"]) {
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
a.duration = 0.25;
a.removedOnCompletion = NO;
a.fillMode = kCAFillModeBoth;
if ([key isEqualToString:@"onOrderIn"]) {
a.fromValue = [NSNumber numberWithFloat:0.0];
a.toValue = [NSNumber numberWithFloat:1.0];
} else {
a.fromValue = [NSNumber numberWithFloat:1.0];
a.toValue = [NSNumber numberWithFloat:0.0];
}
return a;
}
return [super actionForKey:key];
}
Zooming in Werken, nicht der Fall ist Auszoomen. Stattdessen wird die Standardausblendungsanimation verwendet.
Der Code könnte einige Tippfehler enthalten, da ich dies auf einem anderen Computer tippe.
Kann jemand helfen?
Ah, danke.Ich werde das testen, sollte ich es noch einmal brauchen, während wir eine komplett andere Version der Software mit Qt Jambi geschrieben haben. ;) – Lemming