iOS開發(fā)動(dòng)畫(Animation)圖片360度不停旋轉(zhuǎn)
iOS開發(fā)動(dòng)畫(Animation)圖片360度不停旋轉(zhuǎn)
最開始的想法是讓旋轉(zhuǎn)的弧度從0到2 * M_PI, ?讓動(dòng)畫不停的repeat,實(shí)驗(yàn)了一下,沒(méi)有任何效果,系統(tǒng)動(dòng)畫的時(shí)候看到0與2 *M_PI是同一起一始點(diǎn),所以沒(méi)有效果。
后來(lái)想到一種辦法,就是一個(gè)變量不斷的累加變大,這樣影響弧度也隨著變化,就達(dá)到了圓周運(yùn)動(dòng)的效果。
直接上代碼:
-(void)?startAnimation
{
[UIView?beginAnimations:nil?context:nil];
[UIView?setAnimationDuration:0.01];
[UIView?setAnimationDelegate:self];
[UIView?setAnimationDidStopSelector:@selector(endAnimation)];
imageView.transform?=?CGAffineTransformMakeRotation(angle?*?(M_PI?/?180.0f));
[UIView?commitAnimations];
}
-(void)endAnimation
{
angle?+=?10;
[self?startAnimation];
}
當(dāng)然你可以用block的方式寫也是一樣的。
-?(void)startAnimation
{
CGAffineTransform?endAngle?=?CGAffineTransformMakeRotation(imageviewAngle?*?(M_PI?/?180.0f));
[UIView?animateWithDuration:0.01?delay:0?options:UIViewAnimationOptionCurveLinear?animations:^{
imageView.transform?=?endAngle;
}?completion:^(BOOLfinished)?{
angle?+=?10;?[self?startAnimation];
}];
}
PS:其中angle是double類型。
這下就可以360度旋轉(zhuǎn)了。
還有一種方法:
CABasicAnimation*?rotationAnimation;
rotationAnimation?=?[CABasicAnimation?animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue?=?[NSNumber?numberWithFloat:?M_PI?*?2.0?];
rotationAnimation.duration?=?duration;
rotationAnimation.cumulative?=?YES;
rotationAnimation.repeatCount?=?repeat;
[_loadingView.layer?addAnimation:rotationAnimation?forKey:@"rotationAnimation"];
reference:https://github.com/jonasschnelli/UIView-i7Rotate360
頂
0