首页 > 解决方案 > 特定功能在所有视图上同时运行。我怎样才能让它一个接一个地运行?

问题描述

我正在使用 SwiftUI 构建 Simon Says 应用程序,并且在构建它时遇到了一个错误。问题在于我在下面键入的一个特定功能。此函数设置 Simon Says 按钮的 alphas(只是一个简单的按钮动画)并将它们设置回 0.5。我希望它在每个视图上同时运行一个,因为到目前为止动画同时在所有按钮上运行。

所有帮助将不胜感激!

for index in settings.guessArray {
            wait(time: 2.0) {
                settings.alphas[index] = 1.0
                wait(time: 0.3) {
                    settings.alphas[index] = 0.5
                }
            }
        }

标签: swiftswiftui

解决方案


也许这样的事情会起作用......

等待异步执行,因此增加每个按钮的初始等待时间以及时将它们分开:

var offset = 0.0
for index in settings.guessArray {
    wait(time: 2.0 + offset) {
        settings.alphas[index] = 1.0
        wait(time: 0.3) {
            settings.alphas[index] = 0.5
        }
    }

    // increase this value to increase the spacing between the buttons
    // lighting up
    offset += 0.3
}

//if you're using this function on multiple SwiftUI views at the same time
//consider placing the offset variable in @EnvironmentObject.

推荐阅读