博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
核心动画 (基本使用) UIView与核心动画对比?
阅读量:5334 次
发布时间:2019-06-15

本文共 2803 字,大约阅读时间需要 9 分钟。

一、CABasicAnimation
核心动画之作用在层上面.
动画的本质是改图层的某一个属性.
CABasicAnimation *anim = [CABasicAnimation animation];
图层有那些属性,这里才能写那些属性.
anim.keyPath = @"transform.scale";
anim.toValue = @0.5;
告诉动画完成的时候不要移除
anim.removedOnCompletion = NO;
保存动画最前面的效果.
anim.fillMode = kCAFillModeForwards;
把动画添加到层上面.
[_redView.layer addAnimation:anim forKey:nil];
 
二、心跳效果
思路:就是让一张图片做一个放大缩放小的动画.
代码实现:
CABasicAnimation *anim =[CABasicAnimation  animation];
设置缩放属性
anim.keyPath = @"transform.scale";
缩放到最小
anim.toValue = @0;
设置动画执行的次数
anim.repeatCount = MAXFLOAT;
设置动画执行的时长
anim.duration = 0.25;
设置动画自动反转(怎么去, 怎么回)
anim.autoreverses = YES;
添加动画
[self.heartView.layer addAnimation:anim forKey:nil];
 
 
三、图片抖动(帧动画)
1.帧动画介绍:
CAKeyframeAnimation它可以在多个值之间进行动画.
设置多值之间的属性为:
后面是一个数组,就是要设置的多个值.
anim.values = @[];
它还可以根据一个路径做动画.
anim.path = 自己创建的路径.
 
2.图片抖动思路:
其实就是做一个左右旋转的动画.先让它往左边旋转-5,再往右边旋转5度,再从5度旋转到-5度.就会有左右摇摆的效果了.
具体实现代码
1创建帧动画
CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
2设置动画属性为旋转
anim.keyPath = @"transform.rotation”;
3设置属性值为多个属性  
anim.values =@[@(angle2radio(-5)),@(angle2radio(5)),@(angle2radio(-5))];
4设置动画执行次数
anim.repeatCount = MAXFLOAT;
5添加动画
[_imageView.layer addAnimation:anim forKey:nil];
根据圆形的路径做移动的效果.
创建路径
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 50, 100, 100)];
[path addLineToPoint:CGPointMake(200, 500)];
把路径设为动画的属性
anim.path = path.CGPath;
 
四、转场动画
 
1.什么是转场动画?
就是从一个场景转换到另一个场景,像导航控制器的push效果,就是一个转场.
2.如何创建转场动画
创建转场动画
CATransition *anim = [CATransition animation];
设置转场类型
anim.type = @"cube";
anim.duration = 1;
设置转场的方向
anim.subtype = kCATransitionFromLeft;
设置动画的开始位置
anim.startProgress = 0.5;
设置动画的结束位置
anim.endProgress  =0.8;
添加动画.了
[_imageV.layer addAnimation:anim forKey:nil];
要执行动画的代码称为转场代码.
转场动画要和转场代码写在同一个方法当中才有动画效果.
 
UIView进行转场动画
[UIView transitionWithView:self.imageV duration:1
    options:UIViewAnimationOptionTransitionFlipFromRight
    animations:^{
        转场代码
        } completion:^(BOOL finished) {
        动画执行完毕时调用.
    }];
使用UIView转场的类型比较少.
 
五、 动画组
 
可以同时执行多个动画.
创建组动画
CAAnimationGroup *group = [CAAnimationGroup animation];
平移
CABasicAnimation *anim = [CABasicAnimation animation];
anim.keyPath = @"position.y";
anim.toValue = @400;
缩放
CABasicAnimation *scaleAnim = [CABasicAnimation  animation];
scaleAnim.keyPath = @"transform.scale";
scaleAnim.toValue = @0.5;
设置动画组属性
group.animations = @[anim,scaleAnim];
group.removedOnCompletion = NO;
group.fillMode = kCAFillModeForwards;
添加组动画
[self.redView.layer addAnimation:group forKey:nil];
 
使用动画组的好处,不需要每次都去添加动画,设置动画完成时的属性.
只需要把要执行的动画,添加到动画组的animations数组当中即可,
最后把组动画添加到层上面,就会自动执行数组当中的动画.动画完成时设置的属性也只需要设置一次.
 
UIView与核心动画对比?
1.UIView和核心动画区别?
核心动画只能添加到CALayer
核心动画一切都是假象,并不会改变真实的值。
 
2.什么时候使用UIView的动画?
如果需要与用户交互就使用UIView的动画.
不需要与用户交互可以使用核心动画
 
3.什么场景使用核心动画最多?
  在转场动画中,核心动画的类型比较多
  根据一个路径做动画,只能用核心动画(帧动画)
  动画组:同时做多个动画

转载于:https://www.cnblogs.com/NB-zhou/p/5038030.html

你可能感兴趣的文章
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
activity 保存数据
查看>>
typescript深copy和浅copy
查看>>
linux下的静态库与动态库详解
查看>>
hbuilder调底层运用,多张图片上传
查看>>
较快的maven的settings.xml文件
查看>>
Git之初体验 持续更新
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
Maven之setting.xml配置文件详解
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>
HDU 2063 过山车
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>