UIView与CALayer

两者的关系

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

CALayer的基本使用

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

  • 阴影
  • 边框
  • 圆角等等

UIView和UIImageView在操作CALayer上的区别

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


    image.png

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


    image.png
  • 而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不可以
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、区别 1.UIView 是 UIKit 的(只能 iOS 使用),CALayer 是 QuartzCore 的...
    马小峰MXF阅读 418评论 0 0
  • iOS程序中,视图可以用UIView和CALayer来创建,下面就以它们为导火索来进一步学习总结iOS程序显示性能...
    Sweet丶阅读 1,909评论 0 6
  • 一.什么是UIView,什么是CALayer? iOS中的一些控件UIButton,UILabel,UITextV...
    Double丶K阅读 1,672评论 0 3
  • 简介 在iOS中使用UIWindow和UIView在屏幕上显示APP的内容。UIWindow为APP提供了一个底层...
    z4ywzrq阅读 444评论 0 0
  • UIView与CALayer的关系 在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一...
    kidzss阅读 1,510评论 0 6