【IOS学习】Core Animation 学习笔记,以及demo

和Core Animation 相关的UIView 属性

  • frame
  • bounds
  • center
  • transform 相对中心点地缩放、旋转、坐标转换。UIKit的API只能用于二维空间,三维需要用Core animation 来做
  • alpha
  • backgroundColor
  • contentStretch  视图的拉升模式 scale-to-fill(填充)和 scale-to-fit(拉伸)

Quartz Core 包含了框架 Core Animation 框架



通过 UIKit 使用 Core Animation



可以为每一个动画上下文赋予一个动画代理,负责在动画触发关键事件作出响应

    [UIView beginAnimations:@"box-animation" context:nil];
    [UIView setAnimationDuration:1];
  
    box.backgroundColor = [UIColor redColor];
    box.frame = CGRectMake(50.0, 50.0, 100, 100);
    box.alpha = 0.5;
<span style="font-size:18px;">    [UIView commitAnimations];</span>


方法二,使用动画代码块 block生成

<span style="color:#000000;">    [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
        box.backgroundColor = [UIColor redColor];
        box.frame = CGRectMake(50.0, 50.0, 100, 100);
        box.alpha = 0.5;
    } completion:^(BOOL finished) {
        NSLog(@"finished");
    }];</span>


自定义Core Animation的效果
Core Animation 的图层,也叫CALayer。之前UIKit 对UIView 操作时,实际上是通过UIView的属性与视图的图层CALayer上动起来,呈现给用户。CALayer 管理基于图片的内容,并允许你对内容添加动画。主要工作是管理你提供的虚拟的内容,同时layer 本身有设置的可见内容,如background color, border, and shadow. layer 以及相关的position, size, and transform 等用于展示的属性

显式动画和隐式动画
CALayer 包含了一个表现层和模型层
模型层用来在内存中村村必要的图层信息
表现层则用在将图层显式屏幕上
隐式动画:动画属性在模型层中被修改,通过表现层传递出来,最终显示在屏幕上
显式动画:动画属性只存在表现层,原始模型层是不变的,在一个显式动画介绍后,CALayer 会回到动画开始之前的动态。因为模型层的原始数据没有改变。

如果一个动画是持续不断的(旋转图标),用显式加有效率。对于复杂的动画分组或路径,可以用动画在动画持续期间做插值,在动画结束时,直接设置模型的隐式值,这样有助于提高效率显式Core Animation 对象(是显式动画)
Core Animation 和 UIKit直接一个关键不同是:Core Animation 类
一个动画类是一个对象,定义了特定动画的独特属性,使用这些类可以把整个图层作成动画进行切换,也可对图层特定属性进行动画(使用方式可以是基本动画和关键帧动画)


Core Animation类
CAAnimation类: CAAnimation类是一个抽象类,遵循CAMediaTiming 和CAAction 协议
CAMediaTiming 协议:调整时间
autoreverses、beginTime、duration、fillMode、repeatCount、repeatDuration、speed、timeOffset
CAAction 协议
CALayer触发的动作,CAAction协议提供了允许一个对象响应这个动作的接口。layer 返回操作对象需要实现CAAction 协议,并且发送–runActionForKey:object:arguments:事件


CAAniamtion 派生类
CABasicAnimation            
单一动画
CAKeyframeAnimation        
关键帧
CATransitionAnimation      
对整个layer 进行修改
CATransition          
渐变效果,push fade等
CAAnimationGroup
多个动画组成动画组一起播放


CAAnimation属性:
delegate:
两个代理方法
removedOnCompletion
如果设置YES,动画一旦完成将被移除,默认YES
timingFunction
定义动画时间的过程:先快后慢、线性、先慢后快等


CAAnimation类方法
animation
创建CAAnimation实例
defaultValueForKey
返回对应key的value值


CAAnimation实例方法
shouldArchiveValueForKey:

delegate 方法
animationDidStart:
animationDidStop:finished:


粒子发生器 (以后遇到再研究)
IOS5引入
粒子是一个点,拥有单独的视图和图层
粒子们有一个共同的起点,这个起点叫做粒子发生器
粒子发生器拥有一组属性,定义了位置、形状、大小等信息
同时管理者一个列表,里面列出了将要发射的焰火。 每隔发射点,有大小、发射频率、速度等属性。

粒子发射点 CAEmitterLayer 属性
emitterPosition 定义发生器的位置
emitterShape
emitterModel
emitterCells



Demo 下载地址:https://github.com/caigee/iosdev_sample

下的DemoCoreGraphics

厚吾http://blog.csdn.net/mangosnow

本文遵循“署名-非商业用途-保持一致”创作公用协议


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值