Pergunta

Estou criando um NSView, que em seu método Drawrect cria e adiciona um nsimageView como uma subview.

Eu gostaria de girar este NSImageView (CircleView) ou [self]. Então, em outro método, estou tentando fazer isso:

-(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"];
}

No entanto, esse código não faz nada quando o método é chamado. Estou fazendo algo errado? Eu experimentei o Self.Layer e o Circleview.Layer, mas nenhum deles parece funcionar ...

Foi útil?

Solução

Você está apenas definindo a animação, você não está realmente chamando o bloco de animação que executa a animação.

Você precisa ligar para um bloco definido entre:

+ beginAnimations:context:
+ commitAnimations

Para realmente executar a animação.

Edit01: Meu mal. Não prestei atenção às tags e adicionei a resposta para a API do iPhone.

Outras dicas

A resposta a essa questão é que o NSView/NSImageView não tinha uma camada de apoio para fazer a animação.

Você define isso com:

[NSView setWantsLayer:YES];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top