动画"/>
iOS 转圈圈的动画
//定义一个枚举 有bofang,zanting,两种状态.
//zhuangtai为枚举变量,默认zanting;- (void)startSpin
{//创建动画并转动zhuangtai=bofang;[CATransaction begin];[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];CGRect frame = [quanquan frame];quanquan.layer.anchorPoint = CGPointMake(0.5, 0.5);quanquan.layer.position = CGPointMake(frame.origin.x + 0.5 * frame.size.width, frame.origin.y + 0.5 * frame.size.height);[CATransaction commit];[CATransaction begin];[CATransaction setValue:(id)kCFBooleanFalse forKey:kCATransactionDisableActions];[CATransaction setValue:[NSNumber numberWithFloat:2.0] forKey:kCATransactionAnimationDuration];CABasicAnimation *animation;animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];animation.fromValue = [NSNumber numberWithFloat:0.0];animation.toValue = [NSNumber numberWithFloat:2 * M_PI];animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear];animation.delegate = self;[quanquan.layer addAnimation:animation forKey:@"rotationAnimation"];[CATransaction commit];
}- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finished
{//动画结束后 继续执行if (finished) {[self startSpin];}
}
- (void)pauseLayer:(CALayer*)layer
{//暂停转动zhuangtai=zanting;CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];layer.speed= 0.0;layer.timeOffset= pausedTime;
}- (void)resumeLayer:(CALayer*)layer
{//继续layer上面的动画zhuangtai=bofang;CFTimeInterval pausedTime = [layer timeOffset];layer.speed= 1.0;layer.timeOffset= 0.0;layer.beginTime= 0.0;CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;layer.beginTime= timeSincePause;
}- (void)stopSpin
{[self pauseLayer:quanquan.layer];zhuangtai=zanting;[controlBtn setImage:[UIImage imageNamed:@"C13_btn_zantingbutton_nomal"] forState:UIControlStateNormal];
// [quanquan.layer removeAllAnimations];
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}- (IBAction)controlClick:(id)sender {if (zhuangtai==zanting) {[controlBtn setImage:[UIImage imageNamed:@"C13_btn_kaishibutton_nomal"] forState:UIControlStateNormal];if (![quanquan.layer animationForKey:@"rotationAnimation"]) {[self startSpin];return;}[self resumeLayer:quanquan.layer];}else{[controlBtn setImage:[UIImage imageNamed:@"C13_btn_zantingbutton_nomal"] forState:UIControlStateNormal];[self pauseLayer:quanquan.layer];}}
更多推荐
iOS 转圈圈的动画
发布评论