做个旋转的 ActivityIndicator

本文详细记录了一段在iOS开发中遇到的旋转ImageView动画问题解决过程,从原始的UIView animation方法到不停旋转的尝试,最终采用CALayer方法实现流畅动画效果的优化路径。文中分享了代码片段与对比分析,旨在为遇到类似问题的开发者提供解决方案与思考路径。
摘要由CSDN通过智能技术生成

做了个indicator,本来以为挺简单,试了好几个方法,才最终搞定,写个博客纪念一下。

原理很简单,就是在UIWIndow上加一个View,然后上面有一个一直旋转的图片。主要问题也是出现在旋转上。

第一种方法是UIView 的animation:

    [UIView beginAnimations:nil context:NULL];

    [UIView setAnimationRepeatCount:INT_MAX];

    [UIView setAnimationDuration:1.0f];

    view.transform = CGAffineTransformMakeRotation(M_PI);

    [UIView commitAnimations];

这个OK了,但只是转了180度,那就把角度换成2*M_PI吧;
换完不转了!!!!!!
哈哈,应该是旋转360度的话认为view没有改变,所以就没有动画了。。。。

然后就搜索怎么不停旋转。搜到的都是timer或者是不断改变角度值的方法的方法:
  1. - (void)startAnimation  
  2. {  
  3.     CGAffineTransform endAngle = CGAffineTransformMakeRotation(imageviewAngle * (M_PI / 180.0f));  
  4.       
  5.     [UIView animateWithDuration:0.01 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{  
  6.         imageView.transform = endAngle;  
  7.     } completion:^(BOOL finished) {  
  8.         angle += 10; [self startAnimation];  
  9.     }];  
  10.       
  11. }  

这段代码是从此处转载:http://blog.csdn.net/devday/article/details/7492469

用timer或者这种总是感觉不好啊!心理不踏实,最后还是去code4app下载了一个indicator的demo,发现还是用UIView的CALayer方法比较好!好在哪我也说不清楚。。。。

老前辈也给了我一份他写的,那就用这个吧!

-(CAAnimation *)animationRotate

{

    CATransform3D rotationTransform3D = CATransform3DMakeRotation(M_PI, 0.0, 0, 1.0);

    CABasicAnimation * animation;

    animation = [CABasicAnimation animationWithKeyPath:@"transform"];

    animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];

    animation.speed = 1.5;

    animation.toValue = [NSValue valueWithCATransform3D:rotationTransform3D];

    animation.duration = 0.5f;

    animation.autoreverses = NO;

    animation.cumulative = YES;

    animation.repeatCount = FLT_MAX;

    animation.delegate = self;


    return animation;

}




总结:动画的东西还是用CALayer的方法比较好!好在哪里我也说不清楚。。。。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值