2010-02-15 1 views
2

NSView는 drawRect 메서드로 NSImageView를 생성하여 하위 뷰로 추가하는 NSView를 생성하고 있습니다.NSImageView를 보유하고있는 NSView 회전하기

이 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

애니메이션을 정의하는 것만으로도 애니메이션을 수행하는 애니메이션 블록을 실제로 호출하지 않습니다.

당신은 사이에 정의 된 블록을 호출해야합니다 :

+ beginAnimations:context: 
+ commitAnimations 

실제로 애니메이션을 실행합니다.

Edit01 : 나쁘다. 나는 태그에 관심을 기울이지 않았고 아이폰 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];