【发布时间】:2011-09-27 15:54:06
【问题描述】:
所以我最近一直在玩动画,我遇到了锚点。我了解锚点默认为 (0.5, 0.5),即视图的中间,您可以更改它,使锚点位于其中一个边框上。我的问题是,如果我希望我的视图围绕视图超级视图中的特定点旋转,我该怎么做?非常感谢任何帮助
【问题讨论】:
标签: animation calayer rotation
所以我最近一直在玩动画,我遇到了锚点。我了解锚点默认为 (0.5, 0.5),即视图的中间,您可以更改它,使锚点位于其中一个边框上。我的问题是,如果我希望我的视图围绕视图超级视图中的特定点旋转,我该怎么做?非常感谢任何帮助
【问题讨论】:
标签: animation calayer rotation
查看这个问题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。
【讨论】:
我自己想通了:我希望锚点位于屏幕左边框上,所以我做了以下操作:
CGFloat subviewX = ((1/view.frame.size.width)*view.frame.origin.x) * (-1);
CGFloat subviewY = 0.5;
【讨论】: