美文网首页
iOS 视图围绕指定点旋转

iOS 视图围绕指定点旋转

作者: _我和你一样 | 来源:发表于2018-04-01 23:45 被阅读0次

    今天在做一个旋转动画时,需要这个view像时钟的针那样绕中心点旋转。
    默认一个视图旋转时是绕自身的中心点进行旋转的。
    我知道本质上是围绕自身的锚点进行旋转的。
    于是更改了锚点,锚点的默认值是(0.5,0.5) 我改成了(0.5,1.0) 在x轴方向上,位于视图的中间,在y轴方向上位于视图的底部。旋转起来达到理想的状态了。
    但是问题出来了,更改锚点之后,视图的frame发生了变化。造成视图上移。

    更改锚点是会更改frame的。我尝试在变更锚点之后重置frame。发现没有效果,但是上网看了看几乎都是如此处理的。其中有一篇我觉得写的很好。详解CALayer的anchorPoint和position

    真是尝试了好久,更改frame也不行,更改positon也不行。

    把约束拉出来,设置完锚点之后重置设置约束,还是不行。

    最终,原来是约束做的鬼。

    一开始我是使用StoryBoard为视图添加的约束,要做动画变化的视图也在其中。

    于是,后续无论修改frame,都无效。但是看约束明明没问题。

    总之,这里要对视图做仿射变换,如果更改了锚点,就要重新设置frame,而约束可能造成代码重置frame失效。

    最后的解决方案就是,要做变换的视图,不能使用约束。

    要在代码中,计算frame值。在修改重置的时候,重置frame就好了。

    相关文章

      网友评论

          本文标题:iOS 视图围绕指定点旋转

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