2010-02-15 53 views
2

我正在創建一個NSView,它的drawRect方法創建並添加一個NSImageView作爲子視圖。旋轉NSView的持有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,但似乎都沒有工作...

回答

1

Your're只是定義動畫,你實際上沒有調用執行動畫的動畫塊。

你需要調用之間定義塊:

+ beginAnimations:context: 
+ commitAnimations 

實際運行動畫。

Edit01:我的壞。我沒有注意到標籤,並添加了iPhone API的答案。

+0

如果是,可可在OS X? NSView沒有像UIView – mootymoots

+0

addAnimation:選項啓動核心動畫,根據http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/AnimatingLayers.html – mootymoots

2

這個問題的答案是NSView/NSImageView沒有一個支持圖層來做動畫。

您設定這樣的:

[NSView setWantsLayer:YES];