IOS中的基础动画CABasicAnimation的运用指南
2015-07-03 16:08
387 查看
1.前提信息
CABasicAnimation类主要用于view的移动、旋转和缩放。通过对视图的layer进行控制达到效果,每个视图皆有layer,类似于安卓的画布。
要使用CABasicAnimation类必须在项目里添加框架"QuartzCore.framework",并添加头文件<QuartzCore/QuartzCore.h>。
2.使用CABasicAnimation进行动画的大致流程
大概有三个过程:①初始化CABasicAnimation对象并设置;
②配置动画对象的一些属性,如:duration,repeatcount等;
③目标视图的layer添加上该动画对象,并命个名
3.详解初始化CSBasicAnimation
+(CABasicAnimation *)animationWithKeyPath:(NSString *)keyPath;//这是一个比较关键的静态初始化方法,决定动画类型
参数keyPath包括这些值:
transform.scale.x = 闊的比例轉換transform.scale.y = 高的比例轉換
transform.rotation.z = 平面圖的旋轉
opacity = 透明度
margin
zPosition
backgroundColor 背景颜色
cornerRadius 圆角
borderWidth
bounds
contents
contentsRect
cornerRadius
frame
hidden
mask
masksToBounds
opacity
position
shadowColor
shadowOffset
shadowOpacity
shadowRadius
4.详解CABasicAnimation的属性
列出一些主要的几个属性:duration //持续时间,repeatCount //重复次数,autoreverse //反向再来一遍动画, fromValue //开始值, toValue //目标值
5.开始动画
啥也不说,上个代码就懂了。
[view.layer addAnimation:myAnimation forKey:@"随意都行"];
然后动画就跑起来了。
6.单一的动画效果可能满足不了我们
于是乎CAAnimationGroup就出现了。我们可以通过一个装着n个动画对象的array来填充它。
+(CAAnimationGroup *)animation;//→_→都是用这个方法初始化动画组的,暂时不知为何
然后为动画组对象的animations属性赋值(一个装着n个动画对象的array),再为动画组对象的各大属性赋值(→_→这些属性与上面提到的一样,但是要注意的是:加入array的动画对象千万不能设置duration和repeatcount,在动画组设置就好了!)
另外,需要注意的是:动画在结束后会自动复位!!所以,为了阻止他们这样做,我们需要这样做:
group.removedOnCompletion = NO;
group.fillMode = kCAFillModeForwards;//这两个属性动画和动画组都拥有
7.可能你又希望在动画开始结束时做点什么
没问题,协议方法帮你忙!不需要遵循神马协议,直接加入以下两个方法,然后自己随便用吧:
- (void)animationDidStart:(CAAnimation *)animation{NSLog(@"begin");
}
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
NSLog(@"end");
}
8.举个栗子
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 40, 40)];view.backgroundColor = [UIColor brownColor];
CGSize size = [[UIScreen mainScreen]bounds].size;
view.center = CGPointMake(20, size.height/2);
[self.view addSubview:view];
//添加旋转动画
CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
//animation1.duration = 10;
//animation1.fromValue = [NSNumber numberWithFloat:0.0];
animation1.toValue = [NSNumber numberWithFloat:36*M_PI];
//x轴上得直接动画
//CABasicAnimation *animation2 = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
//animation2.duration = 6;
//animation2.fromValue = [NSNumber numberWithFloat:view.center.x];
//animation2.toValue = [NSNumber numberWithFloat:size.width-40];//这里的x又不同了,指的是正常的左上角坐标
//animation2.repeatCount = 3;
//animation2.repeatDuration = 6;
//animation2.autoreverses = YES;
//移动向指定坐标
CABasicAnimation *animation2 = [CABasicAnimation animationWithKeyPath:@"position"];
animation2.toValue = [NSValue valueWithCGPoint:CGPointMake(size.width-20, size.height-20)];//指定的坐标为目标中心的坐标
//动画组
CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = [NSArray arrayWithObjects:animation1, animation2, nil];
group.duration = 3;
group.delegate = self;
group.removedOnCompletion = NO;
group.fillMode = kCAFillModeForwards;
//group.repeatCount = 99;
[group setAutoreverses:YES];
//开始动画
[view.layer addAnimation:group forKey:@"xuanzhuantiaoyuewobutingxie"];
相关文章推荐
- ios开发,让界面只响应单个点击事件
- 联想Win7笔记本通过BIOS禁止开机声音步骤
- archive的时候报“ no identity found"错误 解决方案
- iOS 9 适配系列教程
- iOS圆形按钮
- ipad 升级iOS8
- iOSKVC KVO 添加观察者 --销毁的时候要删除观察者
- Win8系统进不了BIOS无法对BIOS进行修改怎么办
- iOS 开发使用16进制色值设置颜色
- iOS之CF和OC之间类型转换
- iOS 程序crash控制台输入命令调试
- iOS 实现gif 图片效果 以及 图片不变形处理
- iOS进入后台长时间运行后台任务
- iOS开发关于block学习的总结
- iOS 异常处理
- iOS点击空白处关闭presentViewController出来的view
- iOS RAC 初探
- [iOS]深入浅出 iOS 之多线程 NSThread
- IOS开发之----四舍五入问题
- iOS键盘监控键盘