ios – 显示隐藏的视图真的很慢

ios – 显示隐藏的视图真的很慢,第1张

概述我有这样的设置: self.webView = WKWebView(frame: frame, configuration: WKWebViewConfiguration())self.externView = UIView(frame: frame)self.externWebView = WKWebView(frame: subFrame, configuration: WKWebView 我有这样的设置:

self.webVIEw = WKWebVIEw(frame: frame,configuration: WKWebVIEwConfiguration())self.externVIEw = UIVIEw(frame: frame)self.externWebVIEw = WKWebVIEw(frame: subFrame,configuration: WKWebVIEwConfiguration())let StackVIEw = UIStackVIEw(frame: frame)self.externVIEw?.addSubvIEw(StackVIEw)self.externVIEw?.backgroundcolor = UIcolor.blackcolor()vIEw.addSubvIEw(self.webVIEw!)self.externVIEw?.hIDden = trueStackVIEw.addSubvIEw(self.externWebVIEw!)vIEw.addSubvIEw(self.externVIEw!)

这创建了我想要的初始设置,这允许1个Web视图作为主要视图,可以启动,外部渲染其他内容,最初是隐藏的.

我遇到的问题是来自我正在调用的工作线程

WKExteralLoader.externVIEw!.hIDden = false;WKExteralLoader.webVIEw!.hIDden = true;

这可能需要30秒才能生效;然而,它的逆几乎是瞬间的.

WKExteralLoader.webVIEw!.hIDden = false;WKExteralLoader.externVIEw!.hIDden = true;

什么可能导致这个问题?

谢谢!

解决方法 @MobileMon告诉你如何解决你的问题,但不是为什么.

UIKit不是线程安全的,这意味着必须从主线程进行所有UIKit调用.设置视图的隐藏标志是UIKit调用,因此需要从主线程完成.

如果从后台线程 *** 作UIVIEw对象,则结果未定义.大多数情况下,结果是变更生效需要很长时间(你所看到的),但有时变化根本不会发生,有时结果是奇怪的视觉效果,有时你的应用程序会崩溃.

每当你从后台线程 *** 作一个UIVIEw对象时,你需要将它包装在对dispatch_async(dispatch_get_main_queue())的调用中,就像在MobileMon的回答中一样(或者其他一些导致代码从主线程运行的方法,但这是首选方式.)

编辑:

要说清楚,你说:

The problem I’m running into,is that from a worker thread I’m calling

WKExteralLoader.externVIEw!.hIDden = false;
WKExteralLoader.webVIEw!.hIDden = true;

您无法从工作线程执行UI代码.相反,你需要像这样编写代码:

dispatch_async(dispatch_get_main_queue(),^{  WKExteralLoader.externVIEw!.hIDden = false;  WKExteralLoader.webVIEw!.hIDden = true;});

这样,从您的工作线程中,您将UI代码发送回主线程.

当您不知道它时,您可能有其他代码尝试从后台线程执行UIKit调用.要检查,请添加以下行:

print("isMainThread = \(Thread.current.isMainThread)")

然后检查控制台中的打印内容.

总结

以上是内存溢出为你收集整理的ios – 显示隐藏的视图真的很慢全部内容,希望文章能够帮你解决ios – 显示隐藏的视图真的很慢所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1007647.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存