首页 > 解决方案 > 在 Swift 4 中使用 draw-move for 循环制作动画

问题描述

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

我的代码在这里:

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

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

标签: iosswift

解决方案


如果您想随着时间的推移逐步创建动画,您应该考虑使用CADisplayLink而不是 Timers 或循环。

基本上 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)
}

推荐阅读