iOS做旋转动画的几种方法
来源:互联网 发布:微信网络传销模式 编辑:程序博客网 时间:2024/06/05 18:07
iOS中可能会用到一些旋转动画的效果,这部分动画其实主要使用的还是CoreAnimation进行,实现起来有好几种方法,但最终的效果都是一样的
上代码
第一种:使用CABasicAnimated方法
这种方法是最简单的方法
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@“transform.rotation.z"];
//默认是顺时针效果,若将fromValue和toValue的值互换,则为逆时针效果
animation.fromValue = [NSNumbernumberWithFloat:0.f];
animation.toValue = [NSNumbernumberWithFloat: M_PI *2];
animation.duration = 3;
animation.autoreverses = NO;
animation.fillMode =kCAFillModeForwards;
animation.repeatCount = 500;
[view.layer addAnimation:animation2 forKey:nil];
这种方法用到了CoreGraphics库中的CGPathAddArc方法
CGMutablePathRef path = CGPathCreateMutable();
//CGPathAddArc函数是通过圆心和半径定义一个圆,然后通过两个弧度确定一个弧线。注意弧度是以当前坐标环境的X轴开始的。
//需要注意的是由于iOS中的坐标体系是和Quartz坐标体系中Y轴相反的,所以iOS UIView在做Quartz绘图时,Y轴已经做了Scale为-1的转换,因此造成CGPathAddArc函数最后一个是否是顺时针的参数结果正好是相反的,也就是说如果设置最后的参数为1,根据参数定义应该是顺时针的,但实际绘图结果会是逆时针的!
//严格的说,这个方法只是确定一个中心点后,以某个长度作为半径,以确定的角度和顺逆时针而进行旋转,半径最低设置为1,设置为0则动画不会执行
CGPathAddArc(path, NULL, view.centerX, view.centerY, 1, 0,M_PI * 2, 1);
CAKeyframeAnimation * animation = [CAKeyframeAnimationanimationWithKeyPath:@"position"];
animation.path = path;
CGPathRelease(path);
animation.duration = 3;
animation.repeatCount = 500;
animation.autoreverses = NO;
animation.rotationMode =kCAAnimationRotateAuto;
animation.fillMode =kCAFillModeForwards;
[layer addAnimation:animation forKey:nil];
[view.layer addAnimation:animation2 forKey:nil];
- iOS做旋转动画的几种方法
- CABaseAnimation动画收录:一、 iOS做旋转动画的几种方法
- iOS 旋转动画的几种实现方式
- 用css3制作旋转加载动画的几种方法
- 用css3制作旋转加载动画的几种方法
- 利用MCGS做旋转动画的方法
- ios禁止屏幕旋转的几种方法
- iOS监听屏幕旋转的几种方法
- iOS开发-autolayout动画效果实现的几种方法
- GDI+旋转图片的几种方法
- GDI+旋转图片的几种方法
- 文字旋转的几种方法
- 详解iOS开发中处理屏幕旋转的几种方法
- ios 实现动画的几种方式
- IOS几种实现动画的方式
- IOS中对子view或者控件做旋转或者缩放动画时出现的异常情况
- 黑马程序员-自己对的ios中动画的几种方法总结
- 加载JIF动画的几种方法
- 数论--多边形求重心及其面积
- [面试题12]第N个丑数
- springmvc内容概要
- Linux环境和终端总结
- 高性能Mysql主从架构的复制原理及配置详解
- iOS做旋转动画的几种方法
- 一个canvas中strokeStyle的疑问
- mysql 时区与时间函数
- 转:jni学习资料
- C语言字符串操作总结大全(超详细)
- 编写DLL所学所思(2)-DLL编写优化
- 多线程技术在数据实时采集分析中的应用
- 投标流程
- 按钮的双击和三击