UIView与UILayer的关系

作者: 蓝翔 | 来源:发表于2019-06-10 08:26 被阅读152次

我们可能很多人都看过这张图,也能大概知道它们两者的关系

1.首先UIView可以响应事件,Layer不可以.

我们先来看第一个例子

如果真的是这样,那何不用CALayer去代替UIView能?所以答案很显然不是正确的。因为上述代码中的CALayer是放在self.view.layer中去,所以才拥有与UIView看似一样的属性。

我们知道在UIKit中,但凡是与UIResponder直接继承或者间接继承的类都应具有相应用户事件的能力。

下面是源文件中,对于UIView的定义,继承自UIResponder

@interface UIView : UIResponder <NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem, UITraitEnvironment, UICoordinateSpace, UIFocusItem, CALayerDelegate>

而我们再去比较CALayer的定义

@interface CALayer : NSObject <NSSecureCoding, CAMediaTiming>

我们发现CALayer上级类是NSObject,为一个基类。那他怎么又可能去对用户的操作做出响应呢?

那么问题来了,既然UIView可以响应事件,UIView中也有一个主CALayer,那到底怎么由怎么样一个过程来让UIView去展示用户能看到的东西的呢?

我们会发现在UIView这个类中它实现了CALayerDelegate,也就是说,当系统想要去绘制图形时,这时候,View会自动调用Delegate的方法去绘制你想要的图形。

包含以下几个方法其中 displayLayer 方法 和 drawLayer 方法如果全部实现的话只会走displayLayer,他们的执行顺序是

layerWillDraw-> displayLayer/drawLayer -> layoutSublayersOfLayer;

如果当前View 有多个Layer 的话 在这4个方法中 写的代码 会在每个layer中绘制。

具体想研究怎么个去精细地去控制这个Layer下篇文章中会详细说明。

相关文章

  • UIView & CALayer 的区别与联系

    UIView & UILayer 的区别与联系

  • UIView与UILayer的关系

    我们可能很多人都看过这张图,也能大概知道它们两者的关系 1.首先UIView可以响应事件,Layer不可以. 我们...

  • 页面优化

    UIView和UILayer的关系 self.view.backgroupColor = [UIColor red...

  • 面试问题记录

    1、UIView和UILayer的关系?不同的地方:1 )继承结构不同UIView继承自UIResponder间接...

  • UI技术总结--UI事件传递&响应

    在讲述UI事件传递之前,先要知道UIView 和 UILayer的区别是什么.简而言之 UIView为其提供内容,...

  • 对UILayer & UIView的理解

    1.首先UIView可以响应事件,Layer不可以. UIview继承UIResponder 而Layer继承NS...

  • 简述CALayer和UIView的关系

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

  • UIView&CALayer

    一、UIView与CALayer的关系 UIView属性持有layer,layer的代理是UIView 二、dra...

  • iOS 知识整理 -- CALayer

    把看到的东西写出来,可以加深印象 1 与UIView的关系 异同: CALayer与UIView都是被层级关系树管...

  • 动画

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

网友评论

    本文标题:UIView与UILayer的关系

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