iOS-UIView与CALayer关系

作者: FlyElephant | 来源:发表于2017-05-30 00:51 被阅读113次

iOS开发中UIView和CALayer有大部分功能是相似的,基本上UIView能支持的功能CALayer也支持.iOS之所以有两套并行的树形结构,是因为iOS与Mac OS之间有很大不同,触摸实现的方式和鼠标键盘的用户交互方式有本质的不同.iOS用UIKit和UIView,而Mac OS用AppKit和NSView进行视图绘制,布局和动画,中间的公共逻辑抽取之后形成了核心动画框架.CALayer作为视图布局的公共部分,更能做到划分清楚责任,避免重复代码.

UIView和CALayer关系:

1.事件响应:UIView可以响应触摸事件,CALayer不可以.UIKit使用UIResponder作为响应对象,来响应系统传递过来的事件并进行处理.UIApplication、UIViewController、UIView、和所有从UIView派生出来的UIKit类(包括UIWindow)都直接或间接地继承自UIResponder类.在 UIResponder中定义了处理各种事件和事件传递的接口, 而 CALayer直接继承 NSObject,并没有相应的处理事件的接口.

2.坐标:UIView坐标通过frame,bounds来显示,最终也是通过CALayer来控制.但是CALayer可以通过position与anchorPoint计算位置.

3.动画:UIView本身是由CoreAnimation来实现的.CALayer类来管理实际绘图.CALayer 内部维护着三分 layer tree,分别是 presentLayer Tree(显示树),modeLayer Tree(模型树), Render Tree (渲染树).iOS动画修改的的动画属性,实际上是修改presentLayer的属性值,而最终展示在界面上的是modelLayer.

4.渲染:当更新CALayer视图层,改变不能立即显示在屏幕上.当所有的层都准备好时,可以调用setNeedsDisplay方法来重绘显示.

view.layer.setNeedsDisplay()

5.变换与变形:CALayer层可以添加3D或仿射变换,可以分别设置层的transform或affineTransform属性.CATransform3D的数据结构定义了一个同质的三维变换(4x4 CGFloat值的矩阵,用于图层的旋转,缩放,偏移,歪斜和应用的透视.

        view.layer.transform = CATransform3DMakeScale(-1.0,-1.0,1.0)
        
        let transform:CGAffineTransform = CGAffineTransform(rotationAngle: 45.0);
        view.layer.setAffineTransform(transform)

相关文章

  • iOS-UIView与CALayer关系

    iOS开发中UIView和CALayer有大部分功能是相似的,基本上UIView能支持的功能CALayer也支持....

  • iOS-UIView和CALayer的关系

    1.响应事件 首先从继承关系来看,UIView继承于UIResponse,而CALayer继承于NSObject。...

  • iOS-UIView与CALayer动画原理

    一 关于CoreAnimation CoreAnimation是苹果提供的一套基于绘图的动画框架,下图是官方文档中...

  • 动画

    动画 Animation 1.CALayer简介 1.1 CALayer与UIView之间的关系 UIView 能...

  • 简述CALayer和UIView的关系

    简述CALayer和UIView的关系 答:UIView和CALayer是相互依赖的关系。UIView依赖与cal...

  • iOS-CALayer详解与应用

    view与layer的关系 CALayer属性表如下 CALayer和UIView的区别 UIView是UIKit...

  • UI事件传递&响应

    UIView与CALayer的关系与区别 UIView为CALayer提供内容,以及负责触摸等事件,参与响应链CA...

  • UI事件传递与响应

    先了解下UIView与CALayer的关系 UIView为CALayer提供内容,负责处理触摸事件,参与响应链 ,...

  •  iOS CoreAnimation核心动画总结

    一些日常的动画练习 //动画演示... iOS版动画 UIView与CALayer的关系:首先CALayer从NS...

  • 2018-07-30 面试题总结

    1.UIView 与CALayer的关系 每个UIView内部都有一个CALayer在背后提供内容的绘制和显示,并...

网友评论

    本文标题:iOS-UIView与CALayer关系

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