我也是看了http://d.cocoachina.com/code/detail/290546 上面的例子,然后自己運行總結的。如有不對的地方還請指出。
UIView的基本動畫
[UIViewanimateWithDuration:1.fanimations:^
{
self.demoImgView.transform=CGAffineTransformMakeRotation(M_PI/2);//順時針旋轉180度
}
completion:^(BOOLfinished)
{
self.demoImgView.transform=CGAffineTransformIdentity;//清除以前的動畫設置雖然旋轉了180度,最后還是回到原來的位置
}];
CABasicAnimation動畫
CABasicAnimation*rotation = [CABasicAnimationanimationWithKeyPath:@"transform.rotation"];
rotation.fromValue=@(0); rotation.toValue=@(M_PI);//180度
rotation.duration=5.f; rotation.repeatCount=0;
rotation.timingFunction= [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionLinear];
rotation.fillMode=kCAFillModeForwards;//fillModeremovedOnCompletion屬性是要一起用才有效果的他們是控制動畫結束之后位置的。rotation.removedOnCompletion=YES回到最初動畫開始位置,rotation.removedOnCompletion = NO;動畫結束的位置在哪就在那
rotation.removedOnCompletion=NO;
//self.demoImgView.transform = CGAffineTransformMakeRotation(M_PI*2);//動畫完了之后停留的位置,
[self.demoImgView.layeraddAnimation:rotationforKey:@"an_roate"];
繞X軸旋轉的動畫
CABasicAnimation*TransformAnim = [CABasicAnimationanimationWithKeyPath:@"transform"];
TransformAnim.fromValue= [NSValuevalueWithCATransform3D:CATransform3DIdentity];
TransformAnim.toValue= [NSValuevalueWithCATransform3D:CATransform3DMakeRotation(M_PI,1,0,0)];
TransformAnim.duration=3;
TransformAnim.cumulative=NO;//cumulativerepeatCount這二個屬性也是有關聯的repeatCount是重復的次數。cumulative=YES的話,從上一次動畫結束的位置繼續動畫。cumulative=NO的話又回到最開始的位置再次動畫。
TransformAnim.repeatCount=2;
[self.demoImgView.layeraddAnimation:TransformAnimforKey:nil];