2

我想知道是否有可能——如果可以,如何——将来自两个不同视图的两个图层“链接”或链接在一起,以便当其中一个图层移动时(因为它正在被动画),它会“拖动”另一图层在相同的方向和相同的时间。

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

最好的,

4

1 回答 1

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

}

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

于 2013-10-07T23:18:50.913 回答