iOS UIView、CALayer

两者的关系

在创建UIView对象时,UIView内部会自动创建一个图层(CALayer对象),而当UIView对象需要显示到屏幕上时,会调用drawRect:方法进行绘图,然后把内容都绘制到图层上,绘图完毕,系统就会将图层展示在屏幕上。
总得来说,UIView并不具有显示的功能,是它内部的层来完成显示这一项工作,但VIew有响应事件的功能。

CALayer的基本使用

通过操作UIView对象里的CALayer对象,我们可以很方便地调整UIView的一些外观属性。比如

  • 阴影
  • 边框
  • 圆角等等

UIView和UIImageView在操作CALayer上的区别

  • 当我们给UIImageView添加圆角时会发现圆角出来了但是显示图片的部分并没有出现圆角

    image

    而当我们给layer的masksToBounds属性设置为yes后才会显示出我们要的效果

    image
  • 而UIView设置圆角是不需要将masksToBounds属性设置为YES的

  • 两者的区别在于 —— 对View进行圆角的设置只会作用在layer图层上,而展示Image又是在另一个图层上,它是以CGImage的形式存储在layer的contents属性上,而将masksToBounds设置为YES是为了去掉View的根层边界外的内容。

UIView和CALayer的选择

  • CALayer是定义在QuartzCore框架中的,CGImageRef,CGColorRef这两种数据类型是定义在COreGraphics框架中的,而UIImage和UIColor是定义在UIKit框架的
  • QuartzCore框架和COreGraphics框架是可以跨平台使用的,在IOS和Mac OS X上都可以使用,但是UIKit只能在IOS中使用
  • CALayer可以做出跟UIView一样的效果,但是由于UIVIew继承于UIResponder,可以处理事件的响应,而CALayer不可以
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS程序中,视图可以用UIView和CALayer来创建,下面就以它们为导火索来进一步学习总结iOS程序显示性能...
    Sweet丶阅读 1,890评论 0 6
  • 一、概念: UIView不具备显示功能,拥有显示功能的是它内部的图层即CALayer属性 当UIView需要显示到...
    金字塔的AI阅读 258评论 0 0
  • 一 关于CoreAnimation CoreAnimation是苹果提供的一套基于绘图的动画框架,下图是官方文档中...
    路飞_Luck阅读 5,162评论 3 23
  • 在 iOS 中,所有的 view 都是由一个底层的 layer 来驱动的。view 和它的 layer 之间有着紧...
    zhangkaizhong阅读 237评论 0 1
  • 1.响应事件 首先从继承关系来看,UIView继承于UIResponse,而CALayer继承于NSObject。...
    安灼拉1024阅读 1,736评论 1 7