2

我正在创建一个 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 但似乎都没有工作......

4

2 回答 2

2

这个问题的答案是 NSView/NSImageView 没有支持层来做动画。

你设置这个:

[NSView setWantsLayer:YES];
于 2010-02-15T20:26:05.663 回答
1

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

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

+ beginAnimations:context:
+ commitAnimations

实际运行动画。

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

于 2010-02-15T18:48:55.370 回答