zoukankan      html  css  js  c++  java
  • 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-/

  • 相关阅读:
    php之static静态变量详解
    设计模式【代理模式】
    小牟Andorid下面MD5具体实现的思路总结
    ubuntu14.04安装MySQL
    Android手机定位技术的发展
    我不同意你,这是您的支持
    我要遵守11文章数据库设计指南
    quick-cocos2d-x游戏开发【3】——display.newSprite创建向导
    第二章 自己的框架WMTS服务,下载数据集成的文章1
    JSTL实现int数据的类型的长度
  • 原文地址:https://www.cnblogs.com/yangwenhuan/p/9920912.html
Copyright © 2011-2022 走看看