美文网首页
CALayer.anchorPoint 与 CALayer.Po

CALayer.anchorPoint 与 CALayer.Po

作者: 小赤焰 | 来源:发表于2018-03-09 16:30 被阅读0次

    问题

    项目中遇到了一个“bug”,我做了一个动画,旋转一个指针,但不是围绕中心来转。而是像仪表盘指针一样的转。所以我首次尝试了改变了指针的锚点anchor point ,但是实际情况并不正确,指针的frame莫名其妙的被改变了,打断点查看,在我设置锚点之后,指针的frame就发生变化了。于是找到了这篇深度好文
    个人比较笨,反复体会两三次,才知道其中的奥义。也顺便想起来培训的时候,老师也曾带我们做过此类测试。老师此刻可能在骂我。

    总结

    父视图 + 子视图 的 样式。
    一旦子视图在父视图中位置(frame)放好。子视图的position随之固定(0.5, 0.5),子视图旋转只能在这个位置,任凭你的anchor point 怎么变化,你偷逃不过父视图的手掌心(就是绕着最开始你在父视图的位置的中心点来旋转)。
    再者这个anchor point 当他变化的时候,视图确实是按照anchor point来旋转的。但同时也是父视图的position。这是咋回事?子视图又是按照自己的anchor point 来转,又是父视图的position。到底是咋呢?确实如此,此时,父视图的position 与 子视图的anchor point 已经重合。为了保持这个重合,子视图的frame已经悄悄地变化了。
    这才是这个“bug”的根源,原因已经找到。解决办法也是相当简单。在配置子视图位置的时候,将要变化的anchor point 与 position 重合即可。得出此时的子视图frame就可以了。

    相关文章

      网友评论

          本文标题:CALayer.anchorPoint 与 CALayer.Po

          本文链接:https://www.haomeiwen.com/subject/xetmfftx.html