核心动画

一.     概论  ---  四类主要等class

l   layer                                             layer是模型,不是视图,他提供一个content

l   Animation/Timing

l   布局管理类

l   转换管理类

 

二.     关于层   ---  参考CALayer

Core Animation 渲染体系

Layer Tree:                  图层的模型数值

presentation tree:          显示动画时的呈现树(当设置一个属性例如backgroud,在layer tree中会立刻更新,在这里会采用插值计算)

render-tree:                            采用呈现树的数据,显示layer tree中的数据

在动画处理中,可以查询到呈现图层的属性.

 

几何特性和变化:             锚点.矩阵

 

layer tree 体系:             与view类似

 

 

三.     (为context或view) 提供图层内容

l   设置content属性,CGImageRefa

setNeedsDisplay / setNeedsDisplayInRect:/needsDisplayOnBoundsChange = YES.会通知图层重绘:

 

l   通过委托实现   ---   通常是与一个context关联或者修改自己的content属性

l   子类化               ---          将context作为参数传入或者直接修改自己的属性

setNeedsDisplay -> [delegate drawLayer:(CALayer*)theLayer

       inContext:(CGContextRef)theContext] -> 绘图

或者:   执行子类自己覆盖的相同方法

注意context 由系统生成!   CALayer只是一个数据模型!

 

四.     动画

l   隐式动画:

l   显式动画:  CAAnimation

 

五.     图层Action

当图层移出插入或者替换现有图层时会触发layer action//以及可动画属性发生改变时

已定义的搜索模式:  (默认在actionForKey: 中的实现)

1.    如果它的委托实现了actionForLayer:forKey:   应该如下响应

1.       返回一个响应标识的action对象

2.       如果无法相应,返回nil

3.       如果没有处理这个标识,并且需要停止搜索,返回NSNull

2.    layer的actions字典被搜索. 为了响应该标识

3.    图层的 style 属性被搜索以便找到一个包含行为标识符的 actions 字典

4.    layer将会收到defaultActionForKey:消息.该消息返回一个对应表示的action对象,或者nil;

 

 

覆盖隐式动画:

通过委托actionForLayer:forKey:或者子类化覆盖,并且覆盖defaultActionForKey:

 

六.     Transactions(大概是过度的意思)

隐式Transactions
显式Transactions

CATransactions 的操作类似于UIView的动画.具体参考其类

l   临时的禁止动画

l   覆盖隐式动画的持续时间

l   嵌套动画

七.     动画图层的布局

约束管理步骤

1.       创建CAConstraintLayoutManager实例并交给layer的layoutManager属性

2.       子图层中添加CAConstraint并且设置属性.

3.       将子图层添加到父图层

 

八.     图层样式属性

 

 

AnimationTypes和Timing

动画类概述

大合集,N合一

 

Timing, Timespaces, and CAAnimation

l   CAAnimation     所有动画类的基类,遵守CAMediaTimingCAAction协议.

CAMediaTiming:      提供模型花时间系统

CAAction:                  由Layer的变化触发

基于属性的动画:          CAPropertyAnimation

l   CABasicAnimation   :      对Layer的属性(animationWithKeyPath:)进行修改

l   Keyframe Animations:   属性修改的聚合,指定path或者一堆的点

 

转化动画:    不同于属性动画操作layer的属性,它操作的是整个图层,

l   CATransition

 

 

Core Image

Core Image概念

可以通过滤镜执行的操作

l   Crop images  ---  修剪图像

l   校正颜色

l   接受颜色效果,例如棕色色调

l   模糊/锐化图像

l   组合图像

l   扭曲/转化图像几何形状

l   生成色彩,棋盘模式,高斯渐变和其他样式图像

l   为图像或视频添加变化效果

l   为视频提供实时颜色调整

 

Core Graphics  Core Image (首先选择GPU)是平行关系,都基于OpenGL

 

关于滤镜

系统内建100多个滤镜,并且可以支持第三方图像单元(image unit)

滤镜的分类:( filter category)     滤镜根据作用和意图做了一个分类(可以批量加载)   

显示名: (display name)               显示再用户界面

滤镜名: (filter name)                            访问滤镜

输入参数:( input parameters)  是控制如何处理.  每个参数包含一个属性类(attribute class) --- 指定他的数据类型.

如下为典型的数据类型:

l   NSString

l   NSNumber

l   CIVector

l   CIColor

l   CIImage

l   NSAffineTransform

惰性求值(lazy evaluation outputImage会将计算整合在CIImage,直到真正绘图的时候才会采取计算

kernel --- 滤镜的核心计算,有点类似于GLSL

 

 

关于Core Image:

l   处理流程:反向加载

 

 

l   坐标空间:                            CoreImage的坐标是无无限的,并且目标图和源图的坐标不一样

l   有效区域:(regionof interest  ROI)  如上图,需要采样的区域

l   可/不可执行滤镜                  可执行指二进制文件.需要在MAC的CPU上生成相应代码

l   颜色组件和Alpha通道       

 

使用Core Image滤镜

获取一堆的滤镜和属性:…

 

使用Core Image滤镜处理图像都步骤//滤镜只是一个访问者

1.       创建CIContext对象

2.       回去处理都图片

3.       创建接受CIImage的CIFilter

4.       设置filter的默认值

5.       设置filter参数

6.       接受一个或多个filter  //就是再搞一个滤镜再操作一次

7.       绘制处理过的图像

 

使用过度效果

1.    创建CIImage

2.    设置并且编制一个Timer

3.    创建CIContext对象

4.    创建CIFilter对象

5.    设置filter对象的默认值

6.    设置filter参数

7.    设置源/目标图象

8.    计算时间

9.    接受filter

10. 绘制结果

11. 重复8-10,直到结束

 

绘图动态系统  ---  CIImageAccumulator  IOS暂时不支持
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值