最近在研读《iOS Core Animation Advanced Techniques》这一本书,想系统地学习下关于 CALayer、Transition、以及动画等知识点。大家可以在 gitbook 上面找到该书的翻译版本。

传送门

在读到图层几何学这一章的时候,了解到了两个概念:anchorPoint 和 position。之前一直把 position 当成是矩形的中心点,如同 UIView 的 center 属性(事实上,在不改变 anchorPoint 的前提下,它确实是图层的中心点),但当 anchorPoint 改变的时候,我一下子懵逼了,为什么 position 不会改变,为什么frame会改变,为什么图形要往某个特定方向移动,而使 anchorPoint 和 position 重合?什么鬼...

怀着一定要搞懂的心态,我去网上查询了很多帖子,有的看了也没懂,有的给了我很大启发。现在也想把自己的理解在这里分享一下:

说白了,position 是什么?其实就是图层(layer)在父图层(superLayer)中的位置,图层的 size 定下了,那么应该把它放在父图层的什么位置,不就是由 position 定的吗?此时,父图层就会告诉这个儿子:喂,小子,这个 position 就是你在我地盘上的位置,你啊,如果将来要做 transition 变换,默认是以这个点为基准的。

儿子:哦,那我到时候做旋转那肯定也绕着这个点转了。deimo(但是)... 我不想老是绕着我的肚脐眼转啊,一点也不刺激,“能不能绕着我的头转?” 儿子对它爸说。

父图层一听,好啊,你小子,有想法啊,“那行,绕着你的哪一点转都可以,不过,你必须还在我 给你的 position 位置转!你的 position 位置不能变!”

儿子想:那我只能挪挪我的 frame 咯,不然没法按照老子的要求转了。 于是,它把自己的 anchorPoint 点移到了 position 位置上,愉快地开始转了=。=

所以,总结一下,anchorPoint 是相对于自身的位置,而 position 是相对于父图层的,改变 anchorPoint 只是更改了图层自身旋转地位置,但始终还是要通过改变 frame 使 anchorPoint 和 position 重合,这样它老子才不会骂它

彻底弄清 anchorPoint 和 position相关推荐

  1. 详解CALayer的anchorPoint和position

    CALayer CALayer属于QuartzCore框架,用于在iOS和Mac OS系统上可见元素的绘制,和属于UIKit框架的UIView的关系是,UIView默认会创建一个CALayer属性,用 ...

  2. anchorPoint 和 position

    读到一篇讲UIView frame 实现的博客, 对相关知识进行了一个总结 https://mp.weixin.qq.com/s/ImYWnDeq4gG_gUkL3_ZDgw view的frame计算 ...

  3. 知识点归档,博客记录

    由于本人能力有限,难免有错,欢迎批评.指正.补充,目录请看右下角 Foundation复习 利用category + runtime + 异常的捕获 来写一个防止崩溃的框架 扩展(Extension) ...

  4. 从 CALayer 的 Position、AnchorPoint 说起

    本文 demo 地址 有的东西虽然基础,但是耐不住人老记性差呀,自己写下来好过次次再搜咯,so...... AnchorPoint 和 Position AnchorPoint anchorPoint ...

  5. 彻底理解position与anchorPoint - Wonderffee's Blog(转)

    引言 相信初接触到CALayer的人都会遇到以下几个问题:  为什么修改anchorPoint会移动layer的位置? CALayer的position点是哪一点呢? anchorPoint与posi ...

  6. iOS开发之layer.frame,layer.anchorPoint,layer.position对frame的影响

    最近遇到相关的问题,所以就将这三个属性值,进行了分析和研究,话不多说,直接上代码了,详细的文字描述都在代码中,可以自行查看. 之前还写了一篇文章,也可以同时查看一下: iOS开发之如何保证控件位置不变 ...

  7. 48.iOS动画和理解position与anchorPoint

    1.动画的基本概念 动画的使⽤场景:iOS中的动画是指一些视图上的过渡效果,合理利用动画能提⾼用户体验,UIView动画影响的属性 frame:视图框架 center:视图位置 alpha:视图透明度 ...

  8. 彻底理解position与anchorPoint

    引言 相信初接触到CALayer的人都会遇到以下几个问题:  为什么修改anchorPoint会移动layer的位置? CALayer的position点是哪一点呢? anchorPoint与posi ...

  9. position与anchorPoint理解(一)

    转自 彻底理解position与anchorPoint 关于CALayer和UIView的介绍请移步:CALayer与UIView的关系 每一个UIView内部都默认关联着一个CALayer, UIV ...

最新文章

  1. python 学习笔记8 (模块)
  2. VISP视觉库识别AprilTag详细解读
  3. ASP.NET MVC4 传递Model到View
  4. Android应用---基于NDK的samples例程hello-jni学习NDK开发
  5. 数据分析工具篇pyspark应用详解——Pyspark实现PCA主成分
  6. 计算机c语言二级试题及答案,计算机c语言二级考试试题及其答案.doc
  7. QML笔记-Particle的基本使用(粒子系统的基本使用)
  8. java设计模式观察者模式_java设计模式--观察者模式
  9. Jaxb2 转换XML文档
  10. 华为机试HJ60:查找组成一个偶数最接近的两个素数
  11. QThread Class
  12. kafka权威指南学习笔记
  13. Android 四大组件面试
  14. java layoutinflater_安卓 LayoutInflater详解
  15. python小学生口算题生成器_小学数学题生成器下载
  16. 解读提升百度权重-刷百度指数的方法
  17. Android stdio调试程序闪退或者报错:xxx keeps stopping解决方案
  18. 移动apn接入点哪个快_51物联卡:使用物联网卡时为什么总要让你设置APN?
  19. 如何不开会员,把易企秀图片下载保存本地
  20. 学习笔记:几种矩阵乘法(matmul product普通乘积、hadamard product矩阵点乘、kronecker product克罗内克积、斯特拉森矩阵乘法)

热门文章

  1. 修复iis解析漏洞_修复典型的iis 10漏洞并进行安全审核
  2. 搜狗日志查询分析 (MapReduce+Hive综合实验)
  3. Android课程表的设计开发
  4. 如何清除浏览器的 DNS 缓存:Chrome、Edge、Firefox、Safari
  5. AcceptEx函数与完成端口的结合使用例子
  6. ARP协议与DNS协议详解
  7. markdown上划线和下划线
  8. OpenJudge NOI 1.13 19:啤酒厂选址
  9. 如何去掉RTP头或RTP拓展头
  10. 总结一: 如何提高效率