我想知道是否有可能——如果可以,如何——将来自两个不同视图的两个图层“链接”或链接在一起,以便当其中一个图层移动时(因为它正在被动画),它会“拖动”另一图层在相同的方向和相同的时间。
我想这样做的原因是因为我有两个半透明视图,它们的大小相同,最初一个在另一个之上,但是在某些时候最上面的视图是动画的,我需要屏蔽底部视图的内容与最上面的“形状”。我已经为底视图创建了一个与顶视图大小相同的图层蒙版,但是当它开始移动时,我需要将该图层蒙版与它一起拖动。
最好的,
我想知道是否有可能——如果可以,如何——将来自两个不同视图的两个图层“链接”或链接在一起,以便当其中一个图层移动时(因为它正在被动画),它会“拖动”另一图层在相同的方向和相同的时间。
我想这样做的原因是因为我有两个半透明视图,它们的大小相同,最初一个在另一个之上,但是在某些时候最上面的视图是动画的,我需要屏蔽底部视图的内容与最上面的“形状”。我已经为底视图创建了一个与顶视图大小相同的图层蒙版,但是当它开始移动时,我需要将该图层蒙版与它一起拖动。
最好的,
可以说,没有办法听到动画的发生,但是,您可以设置一个显示链接并检查/轮询图层以查看是否有任何动画。我认为它会产生很多开销,但它可能会为您提供您正在寻找的东西。
我可能更喜欢同时为两个图层设置动画。我不知道在你的场景中是什么事件触发了一个图层开始动画,但它在那里我会尝试与它一起为第二层设置动画。
如果您想尝试显示链接路线,您可以这样做:
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
}
如果该层正在动画,则表示层将具有当前的飞行中动画值。