Rotazione NSView che contiene un NSImageView
-
20-09-2019 - |
Domanda
sto creando un NSView, che nel suo metodo drawRect crea e aggiunge un NSImageView come una visualizzazione secondaria.
Vorrei far ruotare questo NSImageView (circleView), o [auto]. Quindi, in un altro metodo, sto cercando di farlo:
-(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"];
}
Tuttavia, questo codice non fa nulla quando il metodo viene chiamato. Sto facendo qualcosa di sbagliato? Ho provato self.layer e circleView.layer ma nessuno dei due sembra funzionare ...
Soluzione
vi trovate definire soltanto l'animazione, non si è in realtà richiamo del blocco di animazione che esegue l'animazione.
È necessario chiamare un blocco definito tra:
+ beginAnimations:context:
+ commitAnimations
Per eseguire effettivamente l'animazione.
Edit01: Il mio male. Non ho prestato attenzione ai tag e ha aggiunto la risposta per l'API iPhone.
Altri suggerimenti
La risposta a questo problema è che il NSView / NSImageView non ha avuto uno strato di supporto per fare l'animazione con.
È possibile impostare questo con:
[NSView setWantsLayer:YES];