从 UIView 制作 UIImage 但不在主线程中

Posted

技术标签:

【中文标题】从 UIView 制作 UIImage 但不在主线程中【英文标题】:Make UIImage From UIView but NOT in the main thread 【发布时间】:2011-02-07 09:38:27 【问题描述】:

我正在使用众所周知的模式从UIView 创建一个UIImage

+ (UIImage *) imageWithView:(UIView *)view

    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, [[UIScreen mainScreen] scale]);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;

现在,我的问题是我有一个非常复杂的视图,上面有很多子视图,所以这个转换过程大约需要 3+(!!!) 秒。

我尝试将它分叉到另一个在后台运行的线程中,它确实提高了性能。

唯一的问题是,我记得,不允许在主线程中制作 UI 相关的东西。

我错了吗,这很好吗? 或者 - 如果我是对的 - 可以做些什么来提高性能?有没有其他方法可以在不同的线程中使用,但效果相同?

非常感谢!

【问题讨论】:

【参考方案1】:

最后我只是在另一个线程中完成了,一切正常。

【讨论】:

以上是关于从 UIView 制作 UIImage 但不在主线程中的主要内容,如果未能解决你的问题,请参考以下文章

从 UIImage 清除 UIView 绘图

UIView.animate 不在一个功能上制作动画

UIImageView 不显示从通知中获取的 UIImage

Swift 从 UIView 的层中获取 UIImage

从 UIView 以编程方式创建 UIImage

在不先显示 UIView 的情况下将 UIView 转换为 UIImage?