如何从两个不同的视图层次结构中“链接”两个图层?

时间:2013-08-16 03:20:00

标签: ios core-animation calayer

我想知道是否有可能 - 如果是这样,如何 - 从两个不同的视图“链接”或链接两个层,以便当其中一个层移动时(因为它是动画的)它“拖动”另一层在同一方向,时间相同。

我想要这样做的原因是因为我有两个半透明的视图,两个都是相同的大小,最初是一个在另一个上面,但在某些时候,最顶层的视图是动画的,我需要屏蔽掉的内容底部视图与最顶部的“形状”。我已经为底部视图创建了一个图层蒙版,它与顶视图的大小相同,但我需要在它开始移动时将它与图层蒙版一起拖动。

最佳,

1 个答案:

答案 0 :(得分:0)

没有办法倾听,可以说,要发生动画,你可以设置一个显示链接,只需检查/轮询图层以查看是否有任何动画。我认为这会产生很多开销,但它可能会为你提供你想要的东西。

我可能更愿意同时为两个图层添加动画效果。我不知道什么事件会触发一个图层来启动场景中的动画,但是我会在那里尝试使用它来设置第二层的动画。

如果您想尝试使用显示链接路线,可以执行以下操作:

CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self 
                                                         selector:
                                                               @selector(
                                                         displayLinkDidUpdate:)];

// Add to the run loop
[displayLink  addToRunLoop:[NSRunLoop mainRunLoop] 
                   forMode:NSDefaultRunLoopMode];

然后,实现显示更新方法:

- (void)displayLinkDidUpdate:(CADisplayLink *)sender
{
  CALayer *presentationLayer = (CALayer*)[_animatingLayer presentationLayer];

  // Do something with the presentation layer

}

如果图层是动画,则表示层将具有当前的飞行中动画值。