---页首---

构建图层层级

构建图层层级

大部分时候使用图层时关联着一个视图(view)对象,但有些时候你需要通过添加图层来增加视图层级。有时使用图层会更好的提高性能或单独使用视图很能完成,这里时候你要知道怎样去管理图层的层级。

安排图层到图层层级

图层层级与视图的类似,同样有父子关系,可把一个图层回到另一个上面,而这种关系会影响子图层的很多方面,如内容、位置、transform...

- 添加、插入、移除子图层
	+ 添加 `addSublayers:`
	+ 插入 `insertSublayer: above:`、 `insertSublayer: atIndex:`、 `insertSublayer: below:`
	+ 移除 `removeFromSuperlayer`
	+ 交换 `replaceSublayer: with:` : 如果交换的图层已经在其它图层层级中,则会先从层级中移除  

你可以使用上面的几种方法操作自己创建的图层对象,不准使用上面的方法去排列基于图层视图中的图层对外,因为视图可以充当独立图层的父级关系

- 子图层位置和大小
	+ 大小通过 `bounds` 设置,初始为(0, 0)
	+ 位置通过 `position`设置,与你设置的锚点相关联
	+ 如果上面两个值不设置, CoreAnimation 默认初始值是 宽、高为0, 位置为 (0, 0)  
myLayer.bounds = CGRectMake(0, 0, 100, 100);
myLayer.position = CGPointMake(200, 200);

通常图层的宽高设置为整数

- 图层层级如何影响动画

> 有些父图层的属性修改会影响子图层的动画应用,如属性 `speed`, 默认是1.0,当设置为2.0时,子图层也会变成2.0,这位时间就会变成原来的一半,如果你将子图层设置为2.0,那将是原来速度的4.0倍  

子图层和裁剪

父图层不会像视图那样自动裁剪超出自身子图层的内容,而是会直接展示所有子图层的所有内容,然而可以通过设置 maskToBounds = YES实现裁剪。

clipping

图层间转换坐标系

- `convertPoint:fromLayer:`
- `convertPoint:toLayer:`
- `convertRect:fromLayer:`
- `convertRect:toLayer:`
posted @ 2020-02-11 17:08  20190311  阅读(244)  评论(0编辑  收藏  举报
---页脚---