iOS CALayer中position和anchorPoint的联系和区别

来源:互联网 发布:flume采集数据到kafka 编辑:程序博客网 时间:2024/05/16 14:52

position :The layer’s position in its superlayer’s coordinate space. Animatable

翻译成中文就是:当前的layer在其父layer层的坐标

anchorPoint: Defines the anchor point of the layer’s bounds rectangle. Animatable.

翻译成中文就是:定义layer层矩形边界的锚点


看到这是不是懵逼了,莫慌,小伙,当时,楼主看的也是云里雾里的,现在来一层层揭开她的面纱


用我的话来总结就是 :position属性是决定子layer在父layer上的位置,默认为(0,0)。其次,anchorPoint属性是决定子layer上的哪个点会在position所指定的位置。


怎么理解呢?

咱们先介绍一下锚点,锚点的取值范围是0~1,默认值(0.5,0.5),描点俗称定位点,网上有些人也称作中心点(这样叫其实不正确,至于为什么,请继续往下看)。




我们在看一段代码

  CALayer *layer = [CALayer layer];  layer.bounds = CGRectMake(0, 0, 100, 100);  layer.position = CGPointMake(0, 0); // 注意刺客position的值  layer.backgroundColor = [UIColor redColor].CGColor;  layer.anchorPoint = CGPointMake(0.5, 0.5);  [self.view.layer addSublayer:layer];

运行的结果

<p>很明显红色块的宽和高都没有100;现在我们更改一下锚点</p> layer.anchorPoint = CGPointMake(0, 0);

咦?怎么回事,为什么一更改锚点,显示正常了呢,其实没有更改锚点之前,运行的结果其实只显示了图片的四分之一,因为此时锚点的默认值是(0.5,0.5)也是红色块的中心位置,所以要将这个点移到position的位置上,将中心位置(50,50)移到position(0,0)当然只显示了四分之一的内容。一旦我们更改了锚点(0,0),那么此时锚点在position的位置就是(0,0),和position一样,也就是视图的左上角,所以正常显示。现在理解了为什么说锚点就是中心点的说法是不正确的吗?


0 0