iOS Animation&Quartz2D
2017-08-09 本文已影响5人
Never_Yg
- CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy) rect按照dx, dy平移
- CGRectInset(CGRect rect, CGFloat dx, CGFloat dy)rect先按照dx, dy进行平移 然后再按照dx, dy缩放,负数是放大,正数是缩小
- center是能修改位置
- bounds只能修改大小
- frame既能修改大小也能修改位置
Animation
UIView的transform属性
CGAffineTransformMakeRotation(**旋转的弧度**);
CGAffineTransformRotate(**在某个transform的基础上-一般为自身**, **旋转的弧度**);
包含
- 平移(Translation)
- 缩放(Scale)
- 旋转(Rotation)
- 带不带make的区别,带make的都是从原始位置运动,不带make的方法,是在上一次运动的基础上,继续运动
CALayer和UIView动画的使用场合
- UIView属于UIKit框架, 属于苹果原生框架, 而CALayer属于QuartzCore框架,而后者是可以跨平台的
- UIView可以与用户交互,而CALayer只用于展示
Core Animation
核心动画作用在CALayer上, CALayer从概念上类似UIView, 可以将UIView看成是一种特殊的CALayer(可以响应事件)
CAAnimation.pngCAAnimation是所有动画对象的父类,实现CAMediaTiming协议, 负责控制动画的时间, 速度和时间曲线等等,是一个抽象类,不能直接使用
iOS9.0之后新增CASpringAnimation类,它实现弹簧效果的动画, 是CABasicAnimation的子类
核心动画中可以直接使用的类有:
- CABasicAniamtion
- CAKeyframeAnimation
- CATransition
- CAAnimationGroup
- CASpringAnimation
资料
Quartz2D
Quartz2D的API是纯C语言的
Quartz2D的API来自Core Graphics框架,需要导入CoreGraphice.framework
可以做什么?
- 生成图片
- 生成PDF
- 裁剪图片
- 自定义UI控件
- 画板
- 手势解锁
Graphics Content 图形上下文
是一个CGContextRef类型的数据
- 保存绘图信息,绘图状态
- 绘图的输出目标
- 指定不同的Graphics Context,就可以将相同的图像绘制到不同的目标上
Quartz2D提供了一下几种类型Graphics Context
Bitmap Graphics Context
PDF Graphics Context
Window Graphics Context
Layer Graphics Context
Printer Graphics Context
drawRect:
何时被调用:
- 第一次显示到屏幕
- 调用view的setNeedsDisplay或者setNeedsDisplayInRect:
drawRect三部曲
- 获取上下文
- 绘制图形
- 渲染