1、自旋轉動畫
- (void)showRotateAnimation:(NSImageView *)imageView {
CABasicAnimation *anim2 = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
anim2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
anim2.removedOnCompletion = YES;
anim2.fillMode = kCAFillModeForwards;
NSNumber* toValue = [NSNumber numberWithFloat:360 * (M_PI / 180.0f)];
NSNumber* fromValue = [NSNumber numberWithFloat:(0.0f) * (M_PI / 180.0f)];
anim2.fromValue = toValue;
anim2.toValue = fromValue;
anim2.repeatCount = HUGE_VALF;
anim2.duration = 1.0f;
/*
* 1、設置中心點,要不然默認繞左下角旋轉了
* 2、提前存一下layer.frame,要不然設置中心點後,旋轉會有偏移
*/
CGRect oldRect = imageView.layer.frame;
imageView.layer.anchorPoint = CGPointMake(0.5f, 0.5f);
imageView.layer.frame = oldRect;
[imageView.layer addAnimation:anim2 forKey:@"transform"];
}
//需要延時一下,要不然不執行動畫
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self showRotateAnimation:self.rotateImageView];
});