我想知道是否有可能 - 如果是这样,如何 - 从两个不同的视图“链接”或链接两个层,以便当其中一个层移动时(因为它是动画的)它“拖动”另一层在同一方向,时间相同。
我想要这样做的原因是因为我有两个半透明的视图,两个都是相同的大小,最初是一个在另一个上面,但在某些时候,最顶层的视图是动画的,我需要屏蔽掉的内容底部视图与最顶部的“形状”。我已经为底部视图创建了一个图层蒙版,它与顶视图的大小相同,但我需要在它开始移动时将它与图层蒙版一起拖动。
最佳,
答案 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
}
如果图层是动画,则表示层将具有当前的飞行中动画值。