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

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值