iOS软件开发iOS开发iOS开发攻城狮的集散地

UIView和CALayer

2016-11-17  本文已影响51人  无意惹东风

关于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的异同。

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

上一篇下一篇

猜你喜欢

热点阅读