美文网首页
iOS-核心动画基本概念

iOS-核心动画基本概念

作者: 海浪萌物 | 来源:发表于2020-08-09 09:58 被阅读0次

熟悉API方法调用-熟能生巧

复杂动画的拆分经验

每个像素点的处理都是一次计算,因为GPU上有很多计算单元,可以独立的计算,而CPU需要不断的切换,没法专注一个计算,所以像素点的计算是通过GPU来计算的

一、core animation

Core Animation是对图形处理的封装,方便开发者进行调用的一套API

  • 简单易用的高性能混合编程模型
  • 用类似于视图一样,使用图层来创建复杂的编程接口
  • 轻量化的数据结构,它可以同时显示让上百个图层产生动画效果
  • 一套非常简单的动画接口,能让动画运行在独立的线程中,并可以独立于主线程之外
  • 一旦动画配置完成并启动,核心动画就能独立并完全控制相应的动画帧
  • 提高应用性能,应用程序只有当发生改变的时候才会重绘内容,使用Core Animation可以不使用其他的图形api,例如OpenGL来获取高效的动画性能
  • 灵活的布局管理模型,允许图层相对同级图层的关系来设置属性的位置和大小

2015年后Core Animation底层变成了Metal,以前是OpenGL ES

image.png

二、Core Animation分类

image.png

三、CALayer

单一职责,UIView和CALayer职责是不一样的

  • UIView管理交互,Mac OS和iOS交互方式不一样,所以要分开

  • CALayer管理渲染,mac OS和iOS通用

图层树:

渲染树:每次渲染都是单独的线程

CAAnimationGroup:动画组

CABasicAnimation:可以设置动画的起点和结束点
- keyPath:不同的参数对应不同的值,例如"postition.y"代表修改Y的值

- toValue:目标值
- removedOnCompletion:动画结束后会不会回到原来位置,默认是YES

- fillMode:kCAFillModeForwards,设置下才能在动画结束后不回到原来位置 

  - kCAFillModeForwards:动画结束后layer保持动画最后的状态
  - kCAFillModeBackwards:在动画开始前,只要将动画加入一个layer,layer便立即进入动画的初始状态并等待动画开始,有一个准备动作
  - kCAFillModeBoth:上面两个结合,一般采用第一中
  - kCAFillModeRemoved:默认值,动画结束后回到原来样子,实现方式是先把原始图层隐藏,然后复制一个图层去执行动画,动画结束后会把复制的图层kill掉,然后将原始图层再显示出来

隐式动画:没指定任何动画,但是core animation会自己去添加一个动画,隐式动画时间是0.25秒,通过runloop去执行的

CAKeyframeAnimation:指定动画路径

CATransition:苹果封装好的动画,没有属性,都是类方法,只能通过压栈方式

    //begin a new transaction
    [CATransaction begin];
    
    //set the animation duration to 1 second
    [CATransaction setAnimationDuration:2.0];
    
    _layer.backgroundColor = [UIColor orangeColor].CGColor;
    //动画结束的操作
    [CATransaction setCompletionBlock:^{
        
        //rotate the layer 90 degrees
        CGAffineTransform transform = self.layer.affineTransform;
        transform = CGAffineTransformRotate(transform, M_PI_2);
        self.layer.affineTransform = transform;
        
    }];
    
    //commit the transaction
    [CATransaction commit];

相关文章

  • iOS-核心动画基本概念

    熟悉API方法调用-熟能生巧 复杂动画的拆分经验 每个像素点的处理都是一次计算,因为GPU上有很多计算单元,可以独...

  • 随手记

    核心动画翻译https://zsisme.gitbooks.io/ios-/content/chapter14/l...

  • 随手记

    核心动画翻译https://zsisme.gitbooks.io/ios-/content/chapter14/l...

  • 2019-07-15

    iOS高级核心动画技巧 浏览地址:https://zsisme.gitbooks.io/ios-/content/...

  • iOS基础 - 核心动画(转)

    iOS基础 - 核心动画 一、核心动画 l核心动画基本概念 l基本动画 l关键帧动画 l动画组 l转场动画 lCo...

  • 感觉有用的文章留存

    0.ios核心动画高级技巧https://zsisme.gitbooks.io/ios-/content/inde...

  • 一头扎进iOS核心动画(一)

    记录一下学习的笔记 核心动画 核心动画基本概念 基本动画 关键帧动画 动画组 转场动画 Core Animatio...

  • iOS动画篇:核心动画

    基本概念 1、什么是核心动画 Core Animation(核心动画)是一组功能强大、效果华丽的动画API,无论在...

  • iOS 核心动画 (Core Animation)

    基本概念 1、什么是核心动画 Core Animation(核心动画)是一组功能强大、效果华丽的动画API,无论在...

  • iOS Core Animation(核心动画基础篇)

    基本概念 1. 什么是核心动画 Core Animation(核心动画)是一组功能强大、效果华丽的动画API,无论...

网友评论

      本文标题:iOS-核心动画基本概念

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