NSView 는 UIView 처럼 animation method를 지원하지 않기 때문에,
CAAnimation을 활용해 Animation을 적용할 수 있습니다.
아래 처럼 말이죠..
CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"transform"]; [basicAnimation setRepeatCount:INT_MAX]; basicAnimation.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 0.1)]; basicAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)]; [basicAnimation setDuration:0.5]; [basicAnimation setAutoreverses:YES]; [self.loadingImageView.layer addAnimation:basicAnimation forKey:@"transform"];
그런데, 이상하게 Animation 이 적용이 시작되지 않는 것입니다.
그래서 이래저래 살펴 보니..
-[LoadingView startAnimation],65th - layer = (null)
NSView에 달려 있어야할, CALayer가 null 로 return 되어 적용되지 않았던 것입니다.
그래서 NSView.h를 찬찬히 살펴 보았습니다.
- (void)setWantsLayer:(BOOL)flag NS_AVAILABLE_MAC(10_5); - (BOOL)wantsLayer NS_AVAILABLE_MAC(10_5);
setWantsLayer라는 Method가 있다는것을 발견하고 실행보니,
아래와 같이 잘됩니다 :)
-[LoadingView startAnimation],65th - layer = _NSViewBackingLayer(0x100525800) a={0, 0} p={0, 0} b=(0,0,87,86) superlayer=0x0 TILED=no