J'ai un CALayer pour animer une modification de son contenu d'image. Maintenant, comment puis-je changer le temps qu'il faut pour que cette animation ait lieu?Modifier le temps d'animation pour les propriétés d'un CALayer
8
A
Répondre
7
C'est plus ou moins simple. Vous avez un ivar CALayer *yourLayer
. Ensuite, vous définissez le délégué et mettre en œuvre la méthode déléguée -(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
Une autre façon de le faire:
[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];
Ce code serait animer le changement du contenu du CALayer plus de 2,5 secondes. Vous pouvez également l'utiliser pour désactiver complètement toutes les animations. Comme ceci:
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
19
Vous pouvez simplement appeler:
[CATransaction setAnimationDuration:durationSecs]
dans -layoutSublayers ou nulle part ailleurs que vous modifiez les couches et attendre à ce qu'ils animent implicitement. Cela affectera la transaction implicite actuelle et toutes les sous-transactions dans celle-ci.
Questions connexes
- 1. Utilisation de JQuery pour modifier les propriétés CSS
- 2. Calayer animer les limites
- 3. Comment modifier les propriétés d'un exécutable? (Windows)
- 4. Temps d'évaluation des propriétés C#
- 5. Pourquoi l'animation de propriétés CALayer personnalisées entraîne-t-elle l'absence d'autres propriétés pendant l'animation?
- 6. Niveau d'autorisation SharePoint pour modifier les métadonnées (propriétés) mais pas le document
- 7. Obstacles CALayer?
- 8. vim colorscheme: modifier uniquement les propriétés du curseur
- 9. Modifier les propriétés de l'exécutable (nom du produit) avec C#
- 10. Modifier les propriétés dans l'étiquette de la barre d'état
- 11. Modifier dynamiquement les propriétés renvoyées par ICustomTypeDescriptor.GetProperties à readonly
- 12. Modifier les propriétés de l'objet dégradé de toile
- 13. Algorithme Knapsack pour le temps
- 14. Calayer valueForKey:
- 15. Modifier les propriétés de UILabel dans un TableViewCell
- 16. Problème avec CAAnimation et les transformations CALayer
- 17. Modifier les propriétés par défaut pour les fichiers .resx créés avec Visual Studio 2010
- 18. Rappel de fin d'animation pour CALayer?
- 19. Asp.Net Ajax modifier les propriétés de contrôle de l'utilisateur
- 20. Modifier les propriétés d'un élément de menu dans Eclipse Plugin?
- 21. Modifier les propriétés de la barre d'état de l'application iPhone
- 22. Visualiser/Modifier les propriétés de l'objet métier dans WPF
- 23. Modifier les propriétés de profil existantes dans sharepoint?
- 24. Comment faire pour modifier le contenu de spinner sur le temps d'exécution dans Android
- 25. IB plug in pour CALayer sous-classe
- 26. Réflexion sur les propriétés pour le niveau le plus élevé
- 27. CALayer et le rendu hors-écran
- 28. Comment faire pour exporter CALayer dans CGImageRef?
- 29. Comment changer dynamiquement le contenu de CALayer
- 30. Modifier les propriétés d'accès aux objets via C#
D'où puis-je obtenir l'objet 'CATransaction'? –
'' 'CATransaction''' est une classe. '' 'setAnimationDuration: seconds''' est une méthode de classe. Dans ce cas, il définit la durée de la transaction en cours. –
Merci, je l'ai maintenant. –