gpt4 book ai didi

swift - 在 Swift 中,对一组 UIView 进行动画处理以使其在 StackView 中依次出现的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-30 10:31:51 25 4
gpt4 key购买 nike

我可以使用以下代码将多个 NSTextField 添加到 NSStackView:

optionsStackView.addView(newOption, in: .center)

我遇到的问题是让每个 NSTextField (newOption) 在 View 出现时一个接一个地出现 - 在使用 NSAnimationContext.runAnimationGroup { (context) in } 时并不是一次全部出现

        let stackViewSubViews = optionsStackView?.arrangedSubviews.enumerated()
stackViewSubViews!.forEach({ newOption in
NSAnimationContext.runAnimationGroup { (context) in
context.duration = 1
newOption.element.animator().alphaValue = 1
}
})

每次 for 循环运行时,我基本上需要延迟半秒,以显示所有 NSTextField 的一个又一个 NSTextField,但我不太清楚如何做到这一点。我查看了使用 DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) 但无法完全弄清楚在所有内容都同时出现的情况下完成这项工作的代码...

我确信我在这里遗漏了一些简单的东西。

有人可以帮忙吗?

最佳答案

在循环的每次迭代期间插入延迟的最简单方法是将循环转变为递归。我将向您展示一般技术,您可以根据您的用例进行调整:

func slowly(from i:Int, to n:Int) {
print(i)
if i != n {
DispatchQueue.main.asyncAfter(deadline:.now()+0.5) {
slowly(from:i+1, to:n)
}
}
}
slowly(from:1, to:3)

关于swift - 在 Swift 中,对一组 UIView 进行动画处理以使其在 StackView 中依次出现的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59011346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com