UIWindow和UIView和CALayer的联系和区别

  首先UIView、UIWindow、CALayer都有共同的基类NSObject,UIView继承于UIResponder,所以UIView可以响应用户事件,CALayer是继承于NSObject所以不能响应用户事件。

下面列举一些处理触摸事件的接口:

  • – touchesBegan:withEvent:
  • – touchesMoved:withEvent:
  • – touchesEnded:withEvent:
  • – touchesCancelled:withEvent:

其实还有一些运动和远程控制事件等等,这里就不一一列举了。

  UIView侧重于对内容的管理,CALayer侧重于对内容的绘制,UIWindow是特殊对UIView,通常一个app只有一个UIWindow,我们可以创建一个视图控制器,然后将这个视图控制器添加到UIWindow上,这时这个视图控制器就是app的First Responder。
  UIView是视图的基类,UIViewController是控制器的基类,UIResponsder是表示一个可以在屏幕上响应触摸事件的对象。
  UIWindow是UIView的子类,UIWindow的主要作用,一是提供一个区域来显示UIView;二是将事件分发给UIView。

UIView和CALayer区别:
1,继承结构:
UIView:UIResponder:NSObjectCALayer:NSObject 由于UIResponsder可以响应用户事件,所以UIView也就可以响应用户事件,CALayer直接从NSObject继承,因为缺少了UIResponder类,不能响应任何用户事件。
2,UIView侧重于对显示内容的管理,CALayer侧重于对内容的绘制。UIView是基于CALayer的高层封装。

总结一下就是:UIView是用来显示内容的,可以处理用户事件.CALayer是用来绘制内容的,对内容进行动画处理依赖与UIView来进行显示,不能处理用户事件

参考链接:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。