iOS:在两个动画视图之间画线

Posted

技术标签:

【中文标题】iOS:在两个动画视图之间画线【英文标题】:iOS: Draw line between two animating views 【发布时间】:2015-01-24 13:59:50 【问题描述】:

我有两个使用 UIView.animateWithDuration 的具有两个不同动画的 UIView。第一个动画立即开始,第二个动画在 0.5 秒延迟后开始。

如何在它们之间绘制一条线并为其设置动画,如下例所示:

我的第一次尝试是将线条绘制为 CGPath,然后使用 CABasicAnimation 对其进行动画处理。如果两个视图(或该测试中的形状)同时动画,则此方法有效,而不是当第二个动画延迟开始时。

然后我一直在研究连续获取 UIView 框架位置的值。这将使我能够在每个动画帧上重新绘制我的线,但我也找不到任何方法。

那么...我是如何这个的?

【问题讨论】:

不错的动画。你的代码尝试会更有用。 第一个测试只使用一个CABasicAnimation。这样做的问题是我需要分别为构成线的两个点设置动画。一旦它在 CAShapeLayer 上,它只能为不起作用的整个形状设置动画。对于第二种方法(连续定位),我没有发现任何工作。 不要描述你的代码,贴出来! 【参考方案1】:

CADisplayLink 可能就是您要找的。​​p>

update 方法添加到您的类并在那里执行动画:

- (void)update 
    // animate view 1
    CGRect frame = view1.frame;
    frame.origin.y += 1;
    view1.frame = frame;
    // animate view 2
    // draw the line/animate another view

当你想开始动画时,做:

displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

动画完成后,从运行循环中删除displayLink

【讨论】:

以上是关于iOS:在两个动画视图之间画线的主要内容,如果未能解决你的问题,请参考以下文章

在两个可移动的 uiviews 之间画线

Itween 动画插件中 的画线

iOS:视图控制器之间的动画

iOS 使用动画块转换视图

如何在 StackView 内的两个视图之间进行动画处理?

iOS:UIView 动画,没有动画发生