首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在后台线程崩溃时缩放图像- UIGraphicsImageRenderer

在后台线程崩溃时缩放图像- UIGraphicsImageRenderer
EN

Stack Overflow用户
提问于 2019-06-18 20:33:08
回答 1查看 853关注 0票数 1
代码语言:javascript
复制
private func scale(image ciImage: CIImage?, for scale: CGFloat) -> UIImage {
    guard let ciImage = ciImage else {
        return UIImage()
    }

    let image = UIImage(ciImage: ciImage)
    let size = CGSize(width: image.size.width * scale, height: image.size.height * scale)

    let renderer = UIGraphicsImageRenderer(size: size)

    return renderer.image(actions: { (context) in
        image.draw(in: CGRect(origin: .zero, size: size))
    })
}

我正在使用这种方法来缩放(并在此之前生成)图像。这是在后台线程中完成的,然后将结果分派回主线程。然而,在image.draw上-有时10次中就有1次,应用程序使用EXC_BAD_ACCESS崩溃。

我做错了什么?我可以在后台做吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-18 20:42:02

不要在后台线程中执行任何UI操作。所有UI更改都必须在主线程中完成

使用分派队列在main thread.Try中工作,如下所示

代码语言:javascript
复制
DispatchQueue.main.async { 
   image.draw(in: CGRect(origin: .zero, size: size))
}

查看this answer以了解我们使用主线程执行UI操作的原因

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56649275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档