一般来说都是先介绍positon,在介绍anchorPoint。这里反过来介绍。
1、anchorPoint:
从一个例子来入手,想象一下,把一张A4白纸用图钉订在书桌上,如果订的不是很紧的话,白纸就可以沿顺时针或逆时针方向绕着图钉旋转,这时候图钉就起着指点的作用。我们要解释的anchorPoint就相当于白纸上当图钉,它主要的作用就是用来作为变换的指点,旋转就死一种变换,类似的还有平移、缩放。
继续,很明显,白纸的旋转形态随图钉的位置不同而不同,图钉订在白纸的正中间与左上角时分别就造成了两种旋转形态,这事有图钉(anchorPoint)的位置决定的。如何衡量图钉(anchorPoint)在白纸中的位置呢?在iOS中,anchorPoint点的值是用一种相对于bounds的比例值来确定的,在白纸的左上角、右下角,anchorPoint分别为(0, 0), (1, 1),也就是说anchoPoint是在单位坐标空间(同时也是左手坐标系)中定义的。类似地,可以得出在白纸的中心点、左下角和右上角的anchorPoint为(0.5, 0.5), (0, 1), (1, 0)。
像UIView有superView与subView的概念一样,CALayer也有superLayer与layer的概念,前面说的白纸可以理解为layer,书桌可以理解为superLayer。如果各自以左上角为原点,则在图中有相对的两个坐标空间。
2、position:
这时候可以大胆的猜测一下,position是不是就是anchorPoint在superLayer中的位置呢?答案是确定的,更确切的说,position是layer中的anchorPoint点在superLayer中的位置坐标。因此可以说,position点是superLayer的,anchorPoint点是相对于layer的,两者是相对不同的坐标空间的一个重合的点。
3、position 和 anchorPoint 的关系:
anchorPoint 决定着CALayer身上的那个点会在position属性所指的位置。