版本记录
版本号 | 时间 |
---|---|
V1.0 | 2017.09.20 |
前言
app中好的炫的动画可以让用户耳目一新,为产品增色不少,关于动画的实现我们可以用基本动画、关键帧动画、序列帧动画以及基于CoreGraphic的动画等等,接下来这几篇我就介绍下我可以想到的几种动画绘制方法。具体Demo示例已开源到Github —— 刀客传奇,感兴趣的可以看我写的另外几篇。
1. 实现动画方式深度解析(一) —— 播放GIF动画(一)
2. 实现动画方式深度解析(二) —— 播放GIF动画之框架FLAnimatedImage的使用(二)
3. 实现动画方式深度解析(三) —— 播放序列帧动画(一)
4. 实现动画方式深度解析(四) —— QuartzCore框架(一)
CoreAnimation基本
CoreAnimation
用于渲染、合成和动画的视觉元素。
核心动画提供高帧率和平滑的动画,而不会增加CPU负担并减慢您的应用程序。 绘制动画的每一帧所需的大部分工作都是为您完成的。 您可以配置一些动画参数(例如开始和结束点),并告知Core Animation
开始。 核心动画做其他事情,将大部分工作交给专用图形硬件来加速渲染。关于CoreAnimation
的文档可以参考Core Animation Programming Guide。
CoreAnimation
包含下面几个部分:
1. Layer Basics
CALayer
CALayerDelegate
CAConstraint
CALayoutManager
CAConstraintLayoutManager
CAAction
2. Text, Shapes, and Gradients
CATextLayer
CAShapeLayer
CAGradientLayer
3. Animation
CAAnimation
CAAnimationDelegate
CAPropertyAnimation
CABasicAnimation
CAKeyframeAnimation
CASpringAnimation
CATransition
CAValueFunction
4. Animation Groups
CAAnimationGroup
CATransaction
5. Animation Timing
CACurrentMediaTime()
CAMediaTimingFunction
CAMediaTiming
CADisplayLink
6. Particle Systems
7. Advanced Layer Options
CAScrollLayer
CATiledLayer
CATransformLayer
CAReplicatorLayer
8. Metal and OpenGL
CAMetalLayer
CAMetalDrawable
CAEAGLLayer
CAOpenGLLayer
CARenderer
9. Remote Display of Layer Content
CARemoteLayerClient
CARemoteLayerServer
10. Transforms
11. Quartz Composer
12. Reference
CoreAnimation结构
如果你在写一个iOS app,无论你是否知道它,你都在使用Core Animation
。如果你正在写OS X app,你可以很好的利用Core Animation
而不用花太多的精力。Core Animation
位于AppKit
和UIKit
底层,并且已经集成到Cocoa
和Cocoa Touch
视图工作流中,当然,Core Animation
核心动画还具有扩展app的视图展示的功能的接口,并为您的app动画提供更精细的控制。
Core Animation Manages Your App’s Content - Core Animation管理你app的内容
Core Animation
本身不是一个画图系统,它是用于在硬件中合成和操纵app内容的基础。 这种基础的核心是层layer对象,用于管理和操纵您的内容。 一个图层layer将您的内容捕获到位图中,这些位图可以通过图形硬件轻松操作。 在大多数app中,图层layers被用作管理视图的内容,但也可以根据需要创建独立的图层layers。
Layer Modifications Trigger Animations - 层修改触发动画
使用Core Animation创建的大部分动画涉及图层属性的修改。 像视图一样,层对象具有边界矩形,屏幕上的位置,不透明度,变换以及许多可以修改的面向视觉的属性。 对于大多数这些属性,更改属性的值会导致隐式动画的创建,从而将图层从旧值移动到新值。 您还可以在需要对结果动画行为进行更多控制的情况下显式地动画化这些属性。
Layers Can Be Organized into Hierarchies - 层可以组织到层次结构中
可以分层次地安排层以创建亲子关系。 层的排列以与视图相似的方式影响其管理的视觉内容。 附加到视图的一组图层的层次结构反映了相应的视图层次结构。 您还可以将图层层次结构添加到层次结构中,以扩展您的app的可视内容,而不仅仅是您的视图。
Actions Let You Change a Layer’s Default Behavior - 让您更改图层默认行为的操作
使用动作对象实现隐含层动画,动作对象是实现预定义界面的通用对象。 Core Animation使用动作对象来实现通常与图层相关联的默认动画集。 您可以创建自己的操作对象来实现自定义动画,也可以使用它们来实现其他类型的行为。 然后,您将操作对象分配给图层的属性之一。 当该属性更改时,Core Animation将检索您的操作对象并告知它执行其操作。
后记
未完,待续~~~