美文网首页
iOS Animation&Quartz2D

iOS Animation&Quartz2D

作者: Never_Yg | 来源:发表于2017-08-09 09:08 被阅读5次
    • 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(可以响应事件)

    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

          本文链接:https://www.haomeiwen.com/subject/pxrfrxtx.html