如何在不阻塞 UI 的情况下创建 UIView

Posted

技术标签:

【中文标题】如何在不阻塞 UI 的情况下创建 UIView【英文标题】:How to create a UIView withouth blocking the UI 【发布时间】:2014-02-12 12:39:03 【问题描述】:

如何在后台线程中 UIView 的子视图 UITextView 上创建大量 UIView 和设置文本。

目前我正在使用for loop 创建UIView,但它会阻止用户执行任何操作。

请帮助我完成这项工作。 提前致谢:)

【问题讨论】:

..在后台线程中运行? 你见过这个吗? ***.com/questions/11242307/… 【参考方案1】:

UIKit 不打算在后台使用。您不需要大量实例化UIViews,因为它们会消耗大量资源,但您可以在屏幕上显示尽可能多的资源,然后将它们重用于显示其他资源,例如。当用户滚动时。这就是集合视图和表视图的想法 - 使用它们或实现您自己的可重用机制。

【讨论】:

【参考方案2】:

您必须在主线程中进行所有 UI 更改。您可以在后台模式下创建UIView,但在主线程中调用addSubview: 方法。

(感谢密涅瓦)

【讨论】:

所以你说我不能在后台模式下向 UiView 添加子视图 你可以做到。但它可能会导致意想不到的结果。 不,你不能,你也不能使用 initWithFrame: 因为它不是线程安全的,也不能添加文本字段。结果出乎意料。 感谢@graver & Gago 的帮助

以上是关于如何在不阻塞 UI 的情况下创建 UIView的主要内容,如果未能解决你的问题,请参考以下文章

如何在不阻塞 UI 的情况下正确使用 MagicalRecord 从 Web 服务导入数据

Flutter:如何在不阻塞 UI 的情况下异步地从资产中读取文件

如何使用 ROOM 库在不阻塞 UI 的情况下将数千条记录从本地数据库加载到 recyclerview

如何在不冻结 GUI 的情况下在单个插槽中实现阻塞进程?

如何在不阻塞主线程的情况下使用 join() 创建多个 C++ 线程?

如何在不破坏 UI 的情况下将搜索放在另一个线程中?