大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
最近在研读《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 前后对照图
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184468.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...