Reputation: 4575
I am creating an NSView, which in its drawRect method creates and adds an NSImageView as a subview.
I would like to rotate this NSImageView (circleView), or [self]. So in another method, I am trying to do that:
-(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"];
}
However, this code doesn't do anything when the method is called. Am I doing something wrong? I tried self.layer and circleView.layer but neither seem to work...
Upvotes: 2
Views: 2185
Reputation: 64428
Your're just defining the animation, you're not actually calling the animation block that performs the animation.
You need to call a block defined between:
+ beginAnimations:context:
+ commitAnimations
To actually run the animation.
Edit01: My bad. I didn't pay attention to the tags and added the answer for the iPhone API.
Upvotes: 1
Reputation: 4575
The answer to this issue is that the NSView/NSImageView didn't have a backing layer to do the animation with.
You set this with:
[NSView setWantsLayer:YES];
Upvotes: 2