关于锚点的问题

时间:2011-09-27 15:54:07

标签: animation calayer rotation

所以我最近一直在玩动画,我遇到了锚点。据我所知,默认情况下锚点是(0.5,0.5),它是视图的中间位置,您可以更改它以使锚点位于其中一个边框上。我的问题是,如果我希望我的视图围绕视图的超视图中的特定点旋转,我该如何继续?非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

查看此问题how to rotate CALayer at one point

另外 - 虽然我猜你可能已经这样做了 - 请阅读核心动画编程指南,Layer Geometry and Transforms

您的问题的不同之处在于您要指定视图的超级视图中的旋转点。为此,您需要将该超级视图点转换为子视图。你可以这样做:

  1. 采取你的超视范围,例如(0,0,500,500)
  2. 拍摄您的子视图帧,例如(50,50,100,100)
  3. 获取超级视图轮换点,例如(75,75)
  4. 将其转换为相对于子视图的点,如下所示:

    CGFloat subviewX = 75.0f - subview.frame.x;
    CGFloat subviewX = 75.0f - subview.frame.y;
    
  5. 这给出了预期的结果(25.0f,25.0f)

  6. 要使用CABasicAnimation旋转CALayer,请查看此问题的所选答案:CALayer with rotation animation

答案 1 :(得分:0)

我自己想通了:我希望锚点位于左侧屏幕边框,所以我做了以下内容:

CGFloat subviewX = ((1/view.frame.size.width)*view.frame.origin.x) * (-1);
CGFloat subviewY = 0.5;