首先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:NSObject
,CALayer:NSObject
由于UIResponsder可以响应用户事件,所以UIView也就可以响应用户事件,CALayer直接从NSObject继承,因为缺少了UIResponder类,不能响应任何用户事件。
2,UIView侧重于对显示内容的管理,CALayer侧重于对内容的绘制。UIView是基于CALayer的高层封装。
总结一下就是:UIView是用来显示内容的,可以处理用户事件.CALayer是用来绘制内容的,对内容进行动画处理依赖与UIView来进行显示,不能处理用户事件
参考链接: