• Objective-C Core Animation深入理解


    Core Animation(核心动画),是从Layer Kit(图层工具包)演变而来的,不仅仅可以用来做动画。

    1、视图 

    一个视图就是屏幕上显示的一个矩形,例如文字、图片和视频。

    视图是UIView(NSView)或者其子类,它可以响应鼠标点击和触摸手势等用户操作,可以支持基于Core Graphics绘图,可以做仿射变换,可以做滑动和渐变等动画。

    视图可以互相嵌套,形成层级关系树,一个视图可以管理它的子视图。

    2、图层

    图层就是各种layer,其中最常用的是CALayer。CALayer也是个矩形,可以设置背景色和图片等。同样会形成层级关系树,管理子图层,也可以做变换和动画。不过,CALayer不响应用户的操作。

    3、视图和图层的关系

    UIView是CALayer的封装。每一个UIView都包含一个CALayer属性,即backing layer(背衬层)。

    @property (nullable, strong) CALayer *layer;

    视图和图层的层级关系是平行的,真正能在屏幕上显示和做动画的是图层。

    4、图层的简单使用

    // 创建子图层
    CALayer *blueLayer = [CALayer layer];
    blueLayer.frame = CGRectMake(50.0f, 50.0f, 100.0f, 100.0f);
    blueLayer.backgroundColor = [UIColor blueColor].CGColor;
    // 把子图层加到视图的图层中
    [self.view.layer addSublayer:blueLayer];

    5、寄宿图

    顾名思义,即寄宿在图层中的图。CALayer有个contents属性

    /* An object providing the contents of the layer, typically a CGImageRef,
     * but may be something else. (For example, NSImage objects are
     * supported on Mac OS X 10.6 and later.) Default value is nil.
     * Animatable. */
    
    @property(nullable, strong) id contents;

    6、自定义绘图

    给contents属性赋值不是设置寄宿图的唯一方法,可以通过继承UIView并重写drawRect方法,使用Core Graphics直接绘制寄宿图。 

    对于UIView,寄宿图不是必须的。但是如果UIView检测到drawRect方法被调用了,就会为视图分配一个寄宿图,这个寄宿图的像素尺寸等于视图大小乘以contentsScale。

    https://bihongbo.com/2016/01/03/memoryGhostdrawRect/  

    If you subclass UIView directly, your implementation of this method does not need to call super.
    - (void)drawRect:(NSRect)dirtyRect {
        [super drawRect:dirtyRect];
        
        // Drawing code here.
    }

    14、图像IO

    加载,解码,渲染

    图片缓存

    离屏渲染

    参考链接:

    https://zsisme.gitbooks.io/ios-/

  • 相关阅读:
    <a>元素生成多个<a>的问题,元素标签结尾影响
    mysql不能插入中文数据
    java: Multiple encodings set for module chunk test "GBK" will be used by compiler
    过滤器第二篇【高级应用】
    过滤器第一篇【介绍、入门、简单应用】
    客户关系管理系统
    Mysql中文乱码
    用户登陆注册【JDBC版】
    Mysql的基本命令图
    购物车小案例【简单版】
  • 原文地址:https://www.cnblogs.com/yangwenhuan/p/9920912.html
Copyright © 2020-2023  润新知