UIView和CALayer

关于UIView和CALayer的问题、在iOS的面试题中很是常见、今天就来说一下二者到底有何区别。
1、首先、来看看通过UIView和CALayer书写的效果:

CALayer *layer = [[CALayer alloc] init];
layer.frame = CGRectMake(40, 40, 100, 100);
layer.backgroundColor = [UIColor redColor].CGColor;
[self.view.layer addSublayer:layer];

UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(40, 200, 100, 100);
view.backgroundColor = [UIColor yellowColor];
[self.view addSubview:view];

效果图

图中红色视图是通过CALayer书写的、黄色视图由UIView写成、可以看到在内容的展示上二者并没有什么明显的区别。

那么下面具体说一下:

1: 从框架来说
CALayer 基于 QuartzCore 框架
UIView 基于 UIKit 框架
CGImageRef、CGColorRef 这两种数据类型是定义在CoreGraphics 框架中的、
而UIImage、UIColor 则是定义在 UIKit 框架中的。

QuartzCore 和 CoreGraphics 可以跨平台使用,适用于iOS 和 Mac OSX、但是为了可移植性、QuartzCore中只能用CGImageRef、CGColorRef

2: 从父类来说
使用CALayer同样可以实现与UIImageView一样的展示效果。那么到底有什么区别呢?
其实、CALayer是直接继承自NSObject的、而UIView是直接继承自UIResponder的。

所以、相比于CALayer来说、UIView多了一个事件处理功能、也就是说、CALayer是不能处理用户的触摸事件的、而UIView可以。

那么、当我们展示出来的东西需要实现和用户交互的时候去使用UIView、而不需要的交互的时候CALayer和UIView都可以。

当然、由于CALayer不需要处理交互事件、所以是轻量级的、性能要比UIView高。

以上就是UIView和CALayer的异同。

希望我的文章能够对大家有所帮助。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容