我们应该都知道每个UIView都包含了一个CALayer。比如给一个View切个圆角:
CALayer是QuartzCore库内的类,是iOS上最基本的绘制单元;而UIView只是CALayer之上的封装,更准确的说,UIView是CALayer的简版封装,加上事件处理的集合类。
UIView的渲染实质就是这个layer的渲染。UIView其实是把常用的接口(属性和方法)暴露出来了,让UIView更为易用。
其次,我们知道iOS平台的Cocoa Touch是源于OS X平台的Cocoa,是在Cocoa的基础上添加了适用于移动手机设备的手势识别、动画等特性;但从底层实现上来说,Cocoa Touch与Cocoa共用一套底层的库,其中就包括了QuartzCore.framework;但QuartzCore.framework一开始就算为OS X设计的,所以其中有部分特性不适合做移动设备开发的。因此,我们也不难理解为何UIView/NSView在CALayer上做了一层封装。
view.layer.cornerRadius = 5.0f;
//加个边框
view.layer.borderWidth = 1.0f;
view.layer.borderColor = [UIColor redColor].CGColor;CALayer是QuartzCore库内的类,是iOS上最基本的绘制单元;而UIView只是CALayer之上的封装,更准确的说,UIView是CALayer的简版封装,加上事件处理的集合类。
UIView的渲染实质就是这个layer的渲染。UIView其实是把常用的接口(属性和方法)暴露出来了,让UIView更为易用。
其次,我们知道iOS平台的Cocoa Touch是源于OS X平台的Cocoa,是在Cocoa的基础上添加了适用于移动手机设备的手势识别、动画等特性;但从底层实现上来说,Cocoa Touch与Cocoa共用一套底层的库,其中就包括了QuartzCore.framework;但QuartzCore.framework一开始就算为OS X设计的,所以其中有部分特性不适合做移动设备开发的。因此,我们也不难理解为何UIView/NSView在CALayer上做了一层封装。
本文介绍了iOS中UIView与CALayer之间的关系,解释了UIView如何基于CALayer进行封装以提供更高级的功能,如圆角和边框设置,并探讨了CocoaTouch框架的设计原理。
1010

被折叠的 条评论
为什么被折叠?



