iOS Animation&Quartz2D

  • 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动画的使用场合

  1. UIView属于UIKit框架, 属于苹果原生框架, 而CALayer属于QuartzCore框架,而后者是可以跨平台的
  2. UIView可以与用户交互,而CALayer只用于展示

Core Animation

核心动画作用在CALayer上, CALayer从概念上类似UIView, 可以将UIView看成是一种特殊的CALayer(可以响应事件)

iOS Animation&Quartz2D_第1张图片
CAAnimation.png

CAAnimation是所有动画对象的父类,实现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三部曲

  1. 获取上下文
  2. 绘制图形
  3. 渲染

你可能感兴趣的:(iOS Animation&Quartz2D)