La rotation NSView qui est titulaire d'un NSImageView
-
20-09-2019 - |
Question
Je crée un NSView, qui, dans sa méthode drawRect crée et ajoute un NSImageView comme sous-vue.
Je voudrais tourner cette NSImageView (Circleview) ou [auto]. Ainsi, dans une autre méthode, je suis en train de le faire:
-(void)startAnimation {
CABasicAnimation* spinAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
spinAnimation.toValue = [NSNumber numberWithFloat:5*2*M_PI];
spinAnimation.duration = 2;
[circleView.layer addAnimation:spinAnimation forKey:@"spinAnimation"];
}
Cependant, ce code ne fait rien lorsque la méthode est appelée. Est-ce que je fais quelque chose de mal? J'ai essayé self.layer et circleView.layer mais ne semble travailler ...
La solution
Vous êtes en train de définir simplement l'animation, vous n'êtes pas vraiment appeler le bloc d'animation qui exécute l'animation.
Vous devez appeler un bloc défini entre:
+ beginAnimations:context:
+ commitAnimations
Pour exécuter réellement l'animation.
Edit01: Mon mauvais. Je ne faisais pas attention aux balises et ajouté la réponse pour l'API iPhone.
Autres conseils
La réponse à cette question est que le NSView / NSImageView n'a pas une couche de support pour faire l'animation avec.
Vous définissez cela avec:
[NSView setWantsLayer:YES];