Skip to main content
 首页 » 操作系统

iOS:在两个动画 View 之间画线

2024年01月01日43xing901022

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

我如何像下面的例子一样在它们之间绘制一条线并设置动画:

我的第一次尝试是将线绘制为 CGPath,然后使用 CABasicAnimation 对其进行动画处理。如果两个 View (或该测试中的形状)同时进行动画处理,而不是当第二个动画延迟开始时,这将起作用。

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

那么...我如何实现这一目标?

请您参考如下方法:

CADisplayLink 可能是您正在寻找的。

添加 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来自运行循环。