CALayer有两个非常重要的属性:position和anchorPoint
@property CGPoint position;
用来设置CALayer在父层中的位置
以父层的左上角为原点(0, 0)
@property CGPoint anchorPoint;
称为“定位点”、“锚点”
决定着CALayer身上的哪个点会在position属性所指的位置
以自己的左上角为原点(0, 0)
它的x、y取值范围都是0~1,默认值为(0.5, 0.5)
我们先来谈anchorPoint(锚点)
它的X值和Y值最大为1最小为0

Snip20160301_3.png
默认的anchorPoint(锚点)位置是(0.5,0.5),白点就是锚点所在位置

Snip20160301_4.png
此时的anchorPoint(锚点)位置是(0,0),白点就是锚点所在位置

Snip20160301_5.png
此时的anchorPoint(锚点)位置是(0.5,0),白点就是锚点所在位置

Snip20160301_6.png
此时的anchorPoint(锚点)位置是(0.5,1),白点就是锚点所在位置

Snip20160301_7.png
此时的anchorPoint(锚点)位置是(1,1),白点就是锚点所在位置

Snip20160301_8.png
就算宽、高样式改变了,X和Y值取值范围还是0~1
此时的anchorPoint(锚点)位置是(1,1),白点就是锚点所在位置

Snip20160301_9.png

Snip20160301_15.png
@property CGPoint anchorPoint;
position
用来设置CALayer在父层中的位置
以父层的左上角为原点(0, 0)
添加一个紫色图层到蓝色图层上,紫色图层是蓝色图层的子图层
假设紫色图层的position是(50,50)
紫色图层的anchorPoint(锚点)位置是(0,0)

Snip20160301_10.png
紫色图层显示到什么位置,由position属性决定
图一是原始图
图二是即将移动的图
图三是移动完成的图
紫色图层自身的anchorPoint(锚点)必须和自身的position重合
===============================================

Snip20160301_11.png
假设
紫色图层的position是(50,50)紫色图层的anchorPoint(锚点)位置是(0.5,0.5)图一是原始图
图二是即将移动的图
图三是移动完成的图
===============================================

Snip20160301_12.png
假设
紫色图层的position是(50,50)紫色图层的anchorPoint(锚点)位置是(1,1)图一是原始图
图二是即将移动的图
图三是移动完成的图
===============================================

Snip20160301_13.png
紫色图层宽高为100父控件
position默认位置是左上角原点(0, 0)紫色图层的anchorPoint(锚点)默认位置是(0.5,0.5)紫色图层自身的anchorPoint(锚点)必须和自身的position重合
如图所示:所以只显示四分之一出来
===============================================

Snip20160301_14.png
如果设置
紫色图层的anchorPoint(锚点)为(0,0)父控件
position默认位置是左上角原点(0, 0)紫色图层自身的anchorPoint(锚点)必须和自身的position重合