gpt4 book ai didi

iphone - 通过在后台线程上渲染 UIWebView 创建 UIImage - iPhone

转载 作者:技术小花猫 更新时间:2023-10-29 11:24:54 26 4
gpt4 key购买 nike

有人知道一种方法,或者对如何获取从 UIWebView 呈现的 UIImage 有创意吗?问题是,它必须在后台线程上。

我会详细说明:我试图每秒从多个 UIWebViews 获取图像+-,并将其显示在屏幕上(当然是 iPhone)。因为将图层渲染到 CGContext 是一项耗费 CPU 的工作,所以我不想使用主线程,所以不会挂起 UI。

到目前为止我的尝试是:

  • 我尝试在 UIGraphicalContext 的 webView 层上使用 renderInContext,但是 _WebTryThreadLock 错误导致 webview 崩溃。

  • 我尝试创建一个 CGBitmapContext,并将 webview 的图层渲染到它,但得到了相同的结果。

  • 我尝试对CALayer 实现copy 方法(通过添加类别),深度复制所有公共(public)属性和子层。之后,我尝试 renderInContext 我复制的图层。我得到了一个 部分“正确”的 UIImage - 意思是,并不是所有的层都被渲染了,所以例如,我只会得到网站页眉(或页脚,或正文,或搜索栏,或者只是一些框架)。 UIWebview 的层由各种子类 CALayer 组成,所以这可能就是这种方法不起作用的原因。

  • 我尝试在 CATransaction 中设置 kCATransactionDisableActions,但它似乎并没有改变这种行为(两者都没有)。

我快要放弃了。

你们中间有救星吗?

最佳答案

UIWebView 讨厌,我的意思是真的讨厌,在后台线程上对它做任何事情。 UIKit 不是完全线程安全的。绘制到图形上下文是(这是在 iOS 4 中添加的),但不是在辅助线程上创建 UIView。

您是在主线程之外创建 UIWebView 吗?你可能有一些代码要分享吗?我怀疑您的问题是由于您试图在辅助线程上对 UIWebView 执行操作而引起的。将 View 内容呈现为图像的绘制操作可以发生在主线程之外,但创建 View 本身不能。

关于iphone - 通过在后台线程上渲染 UIWebView 创建 UIImage - iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4660999/

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