swift延迟后如何更新UI

Posted

技术标签:

【中文标题】swift延迟后如何更新UI【英文标题】:How to update UI after delay in swift 【发布时间】:2018-02-15 22:34:27 【问题描述】:
 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.5)  animations() 

我对 UI 进行了更改(在主线程中),我需要将进一步的动画延迟一段时间,然后(同步)执行它们。上面的代码有效,但出现“在从主线程访问引擎后,此应用程序正在从后台线程修改自动布局引擎。这可能导致引擎损坏和奇怪的崩溃”错误。

感谢您的帮助!

【问题讨论】:

你在animations()做什么?背景资料? @fguchelaar 不,animations() 是一个 UI 更改块。 【参考方案1】:

你可以这样延迟

 UIView.animate(withDuration: 0.8, delay: 0.5, options: [], animations: 
   /// animations here
, completion: nil)

【讨论】:

我尽量避免使用这个功能。有没有其他办法?

以上是关于swift延迟后如何更新UI的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4:设备旋转后 UI 无法更新

Swift UI:使用数组中的随机元素更新视图

如何使用 Xcode 在 Swift 中按 UI 元素类型进行应用范围/更快的更新......?

如何使用 UIKit 在 Swift 5 中立即强制更新我的 UI?

在主线程的密集功能期间 UI 未更新(在 Swift 中)

基于设备旋转更新变量 - Swift UI