UILayer是什么鬼

从项目说起

说实话,UILayer就像alpha等于0.5一样,我始终有点不清晰的感觉。这种感觉大概源于其实项目上真正用到UILayer的地方不是特别多,有用到也只是用几个方法。而那些牛逼的大厂面试好像也看不起这个小小的layer,我们研究它呢就算纯粹的格物致知,了解事物根本原来。

什么是UILayer

那么回到了标题了,UILayer是什么鬼?答案是根本就没有UILayer,苹果官方文档,和我们平时用的其实都是CALayer。同时每个UIView里面都有一个layer属性,这就是让我们误认为是UILayer的东西。那么既然分开看就好说了,UIView继承于UIResponder,它主要管的其实是用户的反应那方面,CALayer集成于NSObject,苹果官方文档是这样解释的:

An object that manages image-based content and allows you to perform animations on that content.

翻译过来的意思就是-----管理基于图像的内容的对象,允许您对该内容执行动画。动画方面我们此处不表,我们主要研究下管理基于图像的内容的对象。

如何管理基于图像的对象

我们都知道你给一个UIView弄个绿色也就算图像了,那我直接UIView.frame就能更改位置大小了啊,我UIView.backgroundColor就算更改图像颜色啦,和你一个CALayer有一分钱关系没有?其实UIView只是CALayer的一个代理,你UIView的这些方法其实都只是CALayer的代理方法。啥?你说我扯淡?好,我们看苹果官方文档上的话:

If the layer object was created by a view, the view typically assigns itself as the layer’s delegate automatically, and you should not change that relationship. For layers you create yourself, you can assign a delegate object and use that object to provide the contents of the layer dynamically and perform other tasks. A layer may also have a layout manager object (assigned to the layoutManager property) to manage the layout of subviews separately.

这段话就不翻译了,其实翻译过来就是我上面说的意思,UIView其实没你想的那么牛逼,其实它本职工作就是响应响应用户事件,凡是眼睛看到的东西基本都是封装在CALayer里面的,不信你看这些方法hitTest,hidden,mask,其实都是CALayer的方法。这就和我开头所写的有了悖论,我们不是平时工作中用不到它,而是用的太频繁了,但是它太低调导致我们有时候误认为一切都是UIView的功劳,它才是

事了拂衣去,深藏功与名

那么就让我们以后继续愉快的使用它吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值