iOS UIView与CALayer的区别

联系

UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。UIView本身完成是由CoreAnimation来实现的。真正的绘图部分,是由一个CALayer类来管理。UIView更像是一个CALayer的管理器,所以访问它的与绘图和坐标相关的属性,如frame,bounds等,实际上都是在访问其所包含的CALayer的相关属性。因此,可以在所有UIView的子类上实现动画效果。

区别

UIView基于UIKit框架,它继承自NSResponder,有事件处理功能/用户交互
CALayer基于QuartzCore框架,它继承自NSObject,不能处理用户交互
所以不需要处理交互事件的视图可用CALayer实现,它是轻量级的,比UIView的性能高。

参考链接

衍生问题:frame与bounds的区别

1.frame是相对父控件来说的,改变的是自身外部的尺寸
2.bounds是相对自身来说的,改变的是自身内部的尺寸;修改了bounds,其内部子控件也会相应改变。
参考链接

你可能感兴趣的:(iOS UIView与CALayer的区别)