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 ...

Était-ce utile?

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];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top