在Swift 4中使用绘制移动循环进行动画处理

时间:2019-01-31 02:30:27

标签: ios swift

我正在尝试通过在Xcode IDE上使用Swift 4在iOS上创建屏幕动画,方法是在屏幕上绘制对象,等待,调整对象的位置并重新绘制。但是,当我在for循环中执行此操作时,屏幕只是等待,然后将对象绘制到最终位置。为什么这样做呢?如何为自己想要的方式制作动画?有没有一种我应该考虑的动画方法?

我的代码在这里:

var counter = 0
for n in 0...10{
    counter = counter + 1
    draw_wheel(counter)
    sleep(1)
}

我只是看到要在10秒后以其最终方向绘制的对象。

1 个答案:

答案 0 :(得分:1)

如果要在一段时间内逐步创建动画,则应考虑使用CADisplayLink而不是计时器或循环。

基本上,CADisplayLink是一个计时器对象,它允许您的应用程序将其图形同步到显示器的刷新率并根据时间戳进行图形绘制。

func createDisplayLink() {
    let displaylink = CADisplayLink(target: self,
                                    selector: #selector(step))

    displaylink.add(to: .current,
                    forMode: .default)
}

@objc func step(displaylink: CADisplayLink) {
    print(displaylink.timestamp)
}