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来进行显示,不能处理用户事件

参考链接:

  • http://blog.csdn.net/chun799/article/details/8223612
  • http://yishuiliunian.gitbooks.io/implementate-tableview-to-understand-ios/content/uikit/1-1-2.html
  • http://www.cocoachina.com/ios/20150828/13244.html

你可能感兴趣的:(UIWindow和UIView和CALayer的联系和区别)