views:

260

answers:

2

Hi All,

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

+1  A: 
TechZen
Where is that for Cocoa on OS X?? NSView doesn't have that like UIView
mootymoots
addAnimation: option starts a core animation, as per http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/AnimatingLayers.html
mootymoots
A: 

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];
mootymoots