在沒寫之前,先實踐一下!
沒怎麼接觸過CA,感覺對我來說還是蠻難的。
話說這個時間過渡的有點久。
中間因為有其他的事情 優先順序比這個我要做的HUD優先順序高。所以就一直拖著,放到現在才做好。
大該花了我兩天時間,從學習CA動畫,到去網上找代碼,貼代碼。然後學以致用……
總算搞定了。
這個過程受益匪淺!不僅學習了
CALayer
CABasicAnimation
也試著去自訂一個layer,然後操作layer完成動畫。
效果還是不錯的。
貼部分代碼 關於layer 旋轉 放縮 透明度等效果的動畫 函數吧!
//回到本質問題 :怎麼用畫一個邊緣漸層顏色的會自動旋轉的圓!
這個函數就可以幫你搞定了。用一個漸層顏色的圓作為你的layer圖。也就是你要旋轉的圖。然後調這個函數就轉了。。。
這個真的是我找到的最簡單最實用的辦法。
//rotation animation- (void) runSpinAnimationOnView:(CALayer*)layerToAnimate duration:(CGFloat)duration rotations:(CGFloat)rotations repeat:(float)repeat;{ CABasicAnimation* rotationAnimation; rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ]; rotationAnimation.duration = duration; rotationAnimation.cumulative = YES; rotationAnimation.repeatCount = repeat; [layerToAnimate addAnimation:rotationAnimation forKey:@"rotationAnimation"];}
//你的layer 可以是一個圖然後通過調整透明度來實現閃爍(當然肯定有別的辦法啦)//flash animation-(void)opacityForever_Animation:(float)time withLayer:(CALayer *)layer{ CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"opacity"]; animation.fromValue=[NSNumber numberWithFloat:1.0]; animation.toValue=[NSNumber numberWithFloat:0.5]; animation.autoreverses=YES; animation.duration=time; animation.repeatCount=FLT_MAX; animation.removedOnCompletion=NO; animation.fillMode=kCAFillModeForwards; [layer addAnimation:animation forKey:@"opacity"];}-(void)moveDuration:(float)time fromOffset:(float)fromValue withOffsetX:(float)x withLayer:(CALayer *)layer{ CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; animation.fromValue = [NSNumber numberWithFloat:fromValue]; animation.toValue=[NSNumber numberWithFloat:x]; animation.duration=time; animation.removedOnCompletion=NO; animation.fillMode=kCAFillModeForwards; [layer addAnimation:animation forKey:@"transform.translation.x"];}