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

È stato utile?

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];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top