从iOS的响应链开始说起
最近在看iOS 的响应链 看到了这样的关系
控件继承关系
因为UIView 继承自 UIResponder 所以其内部包括了 响应 点击等一些列手势的方法,
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
- (void)touchesEstimatedPropertiesUpdated:(NSSet<UITouch *> *)touches API_AVAILABLE(ios(9.1));
所以UIView 具有时间响应的能力。
@property(nonatomic,readonly,strong) CALayer *layer;
// returns view's layer. Will always return a non-nil value. view is layer's delegate
直接去UIView 类中查看,发现了CALyer 是UIView的成员变量 ,所以UIView 属于是CALayer 的再次封装。所以真正的绘图部分还是交给了CALayer。
总结:所以UIView 是对CALAyer的调用封装,并继承UIResponder 具有相应事件
具体分析两者的方法可以查看UIView和Calayer的区别
网友评论