iOS UIView&CALayer
2016-01-28 15:25
232 查看
机制与策略的分离(原子可以看成机制,各种原子的组成就是一种策略)。CALayer可以看做是一种机制,提供图层绘制,UI View可以看做是策略,变动很多。
CALayer直接继承NSObject,没有处理事件的接口
一个 Layer 的 frame 是由它的anchorPoint, position, bounds 和 transform 共同决定的,而一个 View 的 frame 只是简单的返回 Layer的 frame;
UIView主要是对显示内容的管理,而CALayer主要侧重显示内容的绘制
在做iOS动画时,修改非根layer的属性,默认会产生动画,而修改UIView则不会。(每一个UIView都有一个Layer,把这个layer且称为根layer)默认动画时间缺省值为0.25s。
补充:
Frame:
bounds.size 定义了层本身的面积,设置maskToBounds为YES会把所有子层超出bounds范围的部分裁剪掉
bounds.origin属性不影响本身的布局,但它会影响它的子视图,它定义了本地坐标系. 例:view.bounds.origin为CGPointMake (20.0f, 30.0f),则其子视图所依靠的坐标原点就是相对此view顶点的(-20.0f,-30.0f),即左上角。
anchorPoint 它的值标准化为0.0 ~1.0 。左上角是(0,0),右下角是(1,1)[注意,iOS的坐标原点是左上角,Mac os 的坐标原点是左下角]。它就相当于把相册钉在墙上的图钉。
position 定义了经过bounds.size,anchorPoint和transform 的混合后,添加到层中的最终位置。
常见区别
UIView 继承至UIResponder,可响应事件(在UIResponder中定义了处理各种事件和事件传递的接口)CALayer直接继承NSObject,没有处理事件的接口
一个 Layer 的 frame 是由它的anchorPoint, position, bounds 和 transform 共同决定的,而一个 View 的 frame 只是简单的返回 Layer的 frame;
UIView主要是对显示内容的管理,而CALayer主要侧重显示内容的绘制
在做iOS动画时,修改非根layer的属性,默认会产生动画,而修改UIView则不会。(每一个UIView都有一个Layer,把这个layer且称为根layer)默认动画时间缺省值为0.25s。
补充:
Frame:
其值会参考4个值:bounds,anchorPoint,transform,position。
bounds.size 定义了层本身的面积,设置maskToBounds为YES会把所有子层超出bounds范围的部分裁剪掉
bounds.origin属性不影响本身的布局,但它会影响它的子视图,它定义了本地坐标系. 例:view.bounds.origin为CGPointMake (20.0f, 30.0f),则其子视图所依靠的坐标原点就是相对此view顶点的(-20.0f,-30.0f),即左上角。
anchorPoint 它的值标准化为0.0 ~1.0 。左上角是(0,0),右下角是(1,1)[注意,iOS的坐标原点是左上角,Mac os 的坐标原点是左下角]。它就相当于把相册钉在墙上的图钉。
position 定义了经过bounds.size,anchorPoint和transform 的混合后,添加到层中的最终位置。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器