CALayer 的 anchorPoint 与 position

CALayer 像UIView 一样,是有层级的, 一个layer 可以有superLayer( 即layer 所处的容器)。

layer 和superLayer的相对位置的确定需要layer的一个点和superLayer的一个点来确定(不考虑的layer的transform, 默认layer是横竖放置的),那么这两个点怎么确定呢?


layer的anchorPoint 就是来确定layer上的连接点的(锚点), 使用的是layer自己的坐标系,把长宽看作1, 然后按比例计算;

而 position 则是指定superLayer上的一个点,使用的superLayer的坐标系。

然后使这两个点连接(重合),这样就确定了layer在superLayer中的位置。


可以想象layer是船, superLayer是海底,position 指定了把锚落在海底的哪一点,anchorPoint指定了在船的哪一点抛下锚,这样就确定了船相对于海底的位置(假设船是横向放置的)。 当position不变的时候,要改变anchorPoint的位置,那么船必然要移动的;同样的,当anchorPoint不变,要改变position的位置,船也是要移动的。

另外,船如果转动(transform),也只能围绕着锚点。


The value of this property  (position)  is specified in points and is always specified relative to the value in the anchorPoint property. For new standalone layers, the default position is set to (0.0, 0.0). Changing the frame property also updates the value in this property.

anchorPoint 默认是(0.5,0.5);当设置frame的时候,position也会被计算;

你可能感兴趣的:(CALayer 的 anchorPoint 与 position)