Core Animation

position和anchorPoint的区别  -整理自苹果官方文档-

Layers使用两种坐标系:

1. point-based  :1)当需要定义layer在屏幕中或是距另一个layer的位置时用到,比如position,position默认在屏幕正中

         2)定义一个layer的具体位置,在此坐标系中用sizeposition可以确定下来

         3)position是定义layer相对父坐标系的位置的

         4)虽然layer有frame属性,但它会随着positionsize的改变而改变,且用得稍微少一些

2. unit coordinate :这种坐标系不是用来定义layer在屏幕中的位置的,比如anchorPoint。默认为(0.5, 0.5), 这个属性也是和以往大家适应的位置属性不同的一点,建立了和bounds的关系,具体看下面的内容就懂了

Core Animation


可以看到,position是在中间的,position也是少数的会随着anchorPoint的改变而变化的属性。

Core Animation


unit coordinate的世界里,要定义具体的数值时,用的都是比例,所以值为0-1.

什么是anchorPoint?anchorPoint跟transform和position密切相关。

从下图可以看出,anchorPoint变化了,position也会变化。

Core Animation

可以看出来,为什么说anchorPoint不是定义layer在屏幕中的位置的属性,上下两个图anchorPoint发生了变化,但是layer在屏幕中的位置是没有变的,但这是因为position的变化。

会发现position和anchorPoint的位置完全一样。

任何时候都需要满足这样的公式:position.x = frame.origin.x + anchorPoint.x * bounds.size.width

                              position.y = frame.origin.y + anchorPoint.y * bounds.size.height

只是一个是对于父视图而言,一个是对于layer本身而言,更直截了当一点说,position就是对anchorPoint在父视图中位置的数值化反应,而anchorPoint只是比例反应。

比如上图中第一张图,layer长120,宽80;anchorPoint(0, 0);position就是anchorPoint在父视图中的坐标,即(40, 60)。

Core Animation

看得出anchorPoint是transform的旋转围绕点

上一篇:2016年7月1日 星期五 --出埃及记 Exodus 14:28


下一篇:C#中使用JQueryUI中Autocomplete插件