- UIView:
frame
bounds
center
CALayer:
frame
bounds
position
- frame : 代表了图层外部坐标(在父视图上占据的空间)
- bounds: 是内部坐标({0,0},通常是当前图层的左上角)
- center 视图的中心点
- position 代表当前图层相对于图层的锚点(
anchorPoint
)所在父层中的位置 frame
属性是依据bounds
position
transform
计算而得的,其中的一个值发生改变,frame
也会改变,反之亦然- 当对图层做变换(旋转或缩放)的时候,
frame
实际上代表了覆盖在图层旋转之后的整个轴对齐的矩形区域,此时frame
的宽高和bounds
的宽高不一样 - anchorPoint 锚点,是用来决定当前图层 (
CALayer
)自身上的哪个点会在position
属性所指的位置,以自身左上角为原点(0 ,0),默认值是(0.5,0.5),范围是(0~1)
举例说明
- 添加一个绿色图层到蓝色图层上
- 然后具体绿色图层要显示到什么位置,由绿色图层的position决定,这里设置为(100,100)
- 具体把绿色图层的哪个点移动到(100,100),由自身的锚点决定,就像往墙上钉相框(摆的位置不考虑地心引力)
CAlayer独有的Z坐标系
- 和
UIView
的二维坐标系不同,CALayer
存在于一个三维空间中,它有俩个特有属性zPosition
和anchorPiontZ
,俩个都是浮点类型 - 常用语图层的显示顺序,通常图层是根据它的子图层
sublayers
出现顺序来绘制的 - 画家算法 : 一个画家在墙上作画,后被绘制的图层将会遮住之前的图层
- 通过增加图层的
zPosition
把图层前置,设置为0.1或者0.000001都可以,但是最好不要这样,避免由于浮点型四舍五入的计算造成不必要的麻烦
- 和