旋转包含NSImageView的NSView

时间:2010-02-15 17:26:25

标签: cocoa core-animation nsview nsimageview

我正在创建一个NSView,它在drawRect方法中创建并添加NSImageView作为子视图。

我想旋转这个NSImageView(circleView)或[self]。所以在另一种方法中,我试图这样做:

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

但是,调用该方法时,此代码不执行任何操作。难道我做错了什么?我试过self.layer和circleView.layer但似乎都没有工作......

2 个答案:

答案 0 :(得分:2)

这个问题的答案是NSView / NSImageView没有用于执行动画的支持层。

您可以使用以下方式设置:

[NSView setWantsLayer:YES];

答案 1 :(得分:1)

你只是定义动画,你实际上并没有调用执行动画的动画块。

<击>

您需要调用以下之间定义的块:

+ beginAnimations:context:
+ commitAnimations

实际运行动画。

Edit01:我的坏。我没有注意标签并添加了iPhone API的答案。