245 字
1 分钟
如何理解 CALayer 下的 `position`, `anchorPoint`
2026-07-16

举例加深对 positionanchorPoint 概念的理解:你有一张相片,现在需要用大头针将照片钉在墙上。

在这个场景下:

  • position:你在墙上找的一个点,用红笔标记下
  • anchorPoint 大头针穿过照片的点,用红笔标记下

当你钉完照片后,大头针会穿过照片上标记的点,并钉在墙上标记的点上。即:这两个点最终「重合」了。

那么现在照片在墙上的坐标是什么?

  • position 用的是墙的坐标,绝对单位(点),比如你标记在墙上的点是(100,50),那么坐标就是(100,50)
  • anchorPoint 用的是照片自己的坐标,且为一个比例单位(0~1),比如:
    • (0,0):就是照片的左上角位置
    • (1,1):就是照片的右下角位置
    • (0.5,0.5):就是照片自己的中心点位置 所以 anchorPoint 需要换算

于是,照片在墙上的坐标是:

frame.origin.x = position.x - anchorPoint.x * bounds.width
frame.origin.y = position.y - anchorPoint.y * bounds.height
如何理解 CALayer 下的 `position`, `anchorPoint`
https://ihsiao.com/posts/apple/calyer-paramters/
作者
Morse Hsiao
发布于
2026-07-16
许可协议
CC BY-NC-SA 4.0