所以我最近一直在玩动画,我遇到了锚点。据我所知,默认情况下锚点是(0.5,0.5),它是视图的中间位置,您可以更改它以使锚点位于其中一个边框上。我的问题是,如果我希望我的视图围绕视图的超视图中的特定点旋转,我该如何继续?非常感谢任何帮助
答案 0 :(得分:0)
查看此问题how to rotate CALayer at one point
另外 - 虽然我猜你可能已经这样做了 - 请阅读核心动画编程指南,Layer Geometry and Transforms。
您的问题的不同之处在于您要指定视图的超级视图中的旋转点。为此,您需要将该超级视图点转换为子视图。你可以这样做:
将其转换为相对于子视图的点,如下所示:
CGFloat subviewX = 75.0f - subview.frame.x;
CGFloat subviewX = 75.0f - subview.frame.y;
这给出了预期的结果(25.0f,25.0f)
要使用CABasicAnimation旋转CALayer,请查看此问题的所选答案:CALayer with rotation animation。
答案 1 :(得分:0)
我自己想通了:我希望锚点位于左侧屏幕边框,所以我做了以下内容:
CGFloat subviewX = ((1/view.frame.size.width)*view.frame.origin.x) * (-1);
CGFloat subviewY = 0.5;