CABasicAnimation *animation = [CABasicAnimation
animationWithKeyPath:@"transform.rotation.z"];
//默認是順時針效果,若將fromValue和toValue的值互換,則為逆時針效果
animation.fromValue = [NSNumber numberWithFloat:0.f];
animation.toValue = [NSNumber numberWithFloat: M_PI /2];
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; // 動畫效果慢進慢出
animation.duration = 0.1; //動畫持續時間
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO; //動畫后是否回到最初狀態(配合kCAFillModeForwards使用)
animation.repeatCount = 1; //如果這里想設置成一直自旋轉,可以設置為MAXFLOAT,否則設置具體的數值則代表執行多少次
[view.layer addAnimation:animation forKey:nil];
注:
fillMode:決定當前對象在非active時間段的行為.比如動畫開始之前,動畫結束之后
kCAFillModeRemoved 這個是默認值,也就是說當動畫開始前和動畫結束后,動畫對layer都沒有影響,動畫結束后,layer會恢復到之前的狀態(可以理解為動畫執行完成后移除)
kCAFillModeForwards 當動畫結束后,layer會一直保持著動畫最后的狀態
kCAFillModeBackwards 當在動畫開始前,你只要把layer加入到一個動畫中,layer便立即進入動畫的初始狀態并等待動畫開始.你可以這樣設定測試代碼,延遲3秒讓動畫開始,只要動畫被加入了layer,layer便處于動畫初始狀態