CALayer的介绍
2016-04-19 11:51
267 查看
一、什么是CALayer?
在iOS中,能看的见摸的着的东西基本上都是UIView,比如 UIButton、UILabel、UIImageView等,都是UIView。
其实UIView之所以能显示在屏幕上,完全是因为它的内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层。
@property(nonatomic,readonly,retain) CALayer *layer;
当UIView需要显示在屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘制完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。
二、CALayer 和 UIView的关系
a. UIView能显示在屏幕上,归功于CALayer,可以说UIView依赖CALayer,又高于CALayer。UIView可以通过CALayer属性来调整UIView的外观,UIView继承自UIResponder,可以响应用户事件(CALayer不可以响应用户事件)。
b. UIView更像一个CALayer的管理器,访问UIView的绘图和坐标的相关属性,如frame、bounds等,实际上内部都是访问它的所在CALayer的相关属性。
三、CALayer的基本属性
在iOS中,能看的见摸的着的东西基本上都是UIView,比如 UIButton、UILabel、UIImageView等,都是UIView。
其实UIView之所以能显示在屏幕上,完全是因为它的内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层。
@property(nonatomic,readonly,retain) CALayer *layer;
当UIView需要显示在屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘制完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。
二、CALayer 和 UIView的关系
a. UIView能显示在屏幕上,归功于CALayer,可以说UIView依赖CALayer,又高于CALayer。UIView可以通过CALayer属性来调整UIView的外观,UIView继承自UIResponder,可以响应用户事件(CALayer不可以响应用户事件)。
b. UIView更像一个CALayer的管理器,访问UIView的绘图和坐标的相关属性,如frame、bounds等,实际上内部都是访问它的所在CALayer的相关属性。
三、CALayer的基本属性
// 宽度和高度 @propertyCGRect bounds; // 位置(默认指中点,具体由anchorPoint决定) @propertyCGPoint position; // 锚点(x,y的范围都是0-1),决定了position的含义 @propertyCGPoint anchorPoint; // 背景颜色(CGColorRef类型) @propertyCGColorRef backgroundColor; // 形变属性 @propertyCATransform3D transform; // 边框颜色(CGColorRef类型) @propertyCGColorRef borderColor; // 边框宽度 @propertyCGFloat borderWidth; // 圆角半径 @propertyCGColorRef borderColor; // 内容(比如设置为图片CGImageRef) @property(retain)idcontents;
相关文章推荐
- java大数据学习笔记(二) 线程池与应用
- C++学习笔记十五 - C++的类
- hashCode与equals源码分析与应用
- mybatis重复扫描package的问题
- js 小数点前面的0不显示
- redo和undo的区别
- 笔记sql语句
- js,javascript四舍五入round
- 南京理工大学第八届程序设计大赛count_prime
- js下读取或者设置input中的value值
- 欢迎使用CSDN-markdown编辑器
- 快速向表中插入大量数据Oracle中append与Nologging
- php使用 ajax操作购物车
- JavaScript replace() 方法
- 什么是JSON
- 数据库设计规范
- ANgularjs练手篇——Server的调用
- VS快捷键
- textview改变部分文字的颜色和string.xml中文字的替换
- 3D Touch