Ich habe einen CALayer, um eine Änderung in seinen Bildinhalt zu animieren. Wie kann ich nun ändern, wie lange diese Animation dauert?Ändern Animationszeit für Eigenschaften eines CALayer
8
A
Antwort
7
Es ist mehr oder weniger einfach. Sie haben einen ivar CALayer *yourLayer
. Dann setzen Sie die Delegaten und implementieren die delegierte Methode -(id<CAAction>)actionForLayer:forKey:
- (void)awakeFromNib {
yourLayer.delegate = self;
yourLayer.name = @"yourLayer";
}
- (id <CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event {
if([layer.name isEqualToString yourLayer.name]) { // Check for right layer
CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:event]; // Default Animation for 'event'
ani.duration = .5; // Your custom animation duration
return ani;
} else return nil; // Default Animation
}
10
Eine andere Art und Weise, dies zu tun:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:2.5f] forKey:kCATransactionAnimationDuration];
//Perform CALayer actions, such as changing the layer contents, position, whatever.
aCALayerObject.contents = [self newCALayerContents];
[CATransaction commit];
Dieser Code die Änderung des CALayer Inhalts über 2,5 Sekunden animieren würde. Sie können damit auch alle Animationen komplett deaktivieren. Wie folgt aus:
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
19
können Sie rufen:
[CATransaction setAnimationDuration:durationSecs]
in -layoutSublayers oder anderswo, dass man die Schichten ändern und erwarten, dass sie implizit animieren. Dies wirkt sich auf die aktuelle implizite Transaktion und alle Untertransaktionen innerhalb dieser Transaktion aus.
Verwandte Themen
- 1. Füllfarbe von CALayer ändern
- 2. Animieren eines CALayer-Shadowpaths
- 3. solider Schatten für CALayer
- 4. Kontrolle Animationszeit (Scrubbing) in QML
- 5. Wie Eigenschaften eines Matlab-Objekt ändern
- 6. Hinzufügen eines CALayer zu MKOverlayRenderer?
- 7. Hit Testing mit CALayer mit den Alpha-Eigenschaften des CALayer-Inhalts
- 8. Doppelte CALayer
- 9. CALayer-Koordinatensystem
- 10. Animation Ende Callback für CALayer?
- 11. Animation Ende Callback für CALayer?
- 12. Warum bewirkt die Animation benutzerdefinierter CALayer-Eigenschaften, dass andere Eigenschaften während der Animation null sind?
- 13. Ändern Label-Eigenschaften programmatisch
- 14. Ausrichten von Hintergrund innerhalb eines CALayer
- 15. Wie kopierst du einen CALayer?
- 16. CSS-Eigenschaften bei Klick ändern
- 17. Verwenden eines CALayer zum Anzeigen eines Alpha-Mapped-Bilds
- 18. Einen CALayer mit einem anderen CALayer maskieren
- 19. Ändern Sie die Eigenschaften eines unbekannten Objekts in VB.NET
- 20. Ändern der Eigenschaften eines Objekts und Piping Mismatches
- 21. CALayer animiert mit Framewechsel?
- 22. CALayer Leistung vs. UIImageView Leistung
- 23. CALayer Hindernisse?
- 24. CALayer renderInContext
- 25. Rekursiv Eigenschaften und untergeordnete Eigenschaften eines Objekts
- 26. CALayer Resize ist langsam
- 27. UIScrollView in einem CALayer
- 28. Kontrolleurs Eigenschaften nicht dynamisch ändern
- 29. Ändern der NSIS-Installer-Eigenschaften
- 30. Ändern iPhone App Statusleiste Eigenschaften
Woher bekomme ich das CATransaction-Objekt? –
'' 'CATransaction''' ist eine Klasse. '' 'setAnimationDuration: Sekunden''' ist eine Klassenmethode. In diesem Fall wird die Dauer für die aktuelle Transaktion festgelegt. –
Danke, ich verstehe es jetzt. –