前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UIView和CALayer

UIView和CALayer

作者头像
用户2491699
发布2018-08-02 11:29:11
9240
发布2018-08-02 11:29:11
举报
文章被收录于专栏:朱慕之的博客朱慕之的博客
  • UIView和CALayer都继承自NSObjet。
继承结构
  • UIView的继承结构为: UIResponder : NSObject。
    • UIResponder是用来响应事件的,也就是UIView可以响应用户事件
  • CALayer的继承结构为: NSObject
    • 直接从 NSObject继承,因为缺少了UIResponder类,所以CALayer悲催的不能响应任何用户事件。
  • UIView是视图的基类,UIViewController是视图控制器的基类,UIResponder是表示一个可以在屏幕上响应触摸事件的对象;
所属框架
  • UIView是在 /System/Library/Frameworks/UIKit.framework中定义的
    • UIKit主要是用来构建用户界面,并且是可以响应事件的(源于UIView的父类UIResponder)
    • UIView是用来显示内容的,可以处理用户事件
  • CALayer是在/System/Library/Frameworks/QuartzCore.framework定义的。
    • CALayer作为一个低级的,可以承载绘制内容的底层对象出现在该框架中。
    • CALayer是用来绘制内容的,对内容进行动画处理依赖与UIView来进行显示,不能处理用户事件。
作用机制
  • 当UIView需要显示的时候,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上(CALayer上),系统将图层拷贝到屏幕上,完成UIView的显示。
    • 通过操作这个CALayer对象,可以很方便的调整UIView的一些界面属性,比如:阴影,圆角大小,旋转等等。

    1 2 3 4viewT.layer.cornerRadius = 10;//设置半径 viewT.layer.borderWidth = 10;//设置边框的宽度,当然可以不要 viewT.layer.borderColor = [[UIColor redColor] CGColor];//设置边框的颜色 viewT.layer.masksToBounds = YES;//设为NO去试试

  • 所以UIView相比CALayer最大区别是UIView可以响应用户事件,而CALayer不可以。UIView侧重于对显示内容的管理,CALayer侧重于对内容的绘制。
  • UIView和CALayer是相互依赖的关系。UIView依赖与CALayer提供的内容,CALayer依赖UIView提供的容器来显示绘制的内容。归根到底CALayer是这一切的基础,如果没有CALayer,UIView自身也不会存在,UIView是一个特殊的CALayer实现,添加了响应事件的能力。
  • UIView来自CALayer,高于CALayer,是CALayer的高层实现与封装。UIView的所有特性来源于CALayer支持。 参考: 图片引用
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-May-We,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 继承结构
  • 所属框架
  • 作用机制
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档