如何在不阻塞 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