iOS 转圈圈的动画

编程入门 行业动态 更新时间:2024-10-08 18:35:59

iOS 转圈圈的<a href=https://www.elefans.com/category/jswz/34/1769013.html style=动画"/>

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 转圈圈的动画

本文发布于:2024-02-25 08:27:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1698361.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:动画   iOS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!