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

标签 multithreading ios uiview uiimage

我正在使用众所周知的模式从 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;
}

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

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

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

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

非常感谢!

最佳答案

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

关于multithreading - 从 UIView 制作 UIImage 但不在主线程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4919777/

相关文章:

python - 线程内存使用量不断增加

c++ - 为什么一段简单的 C++ 代码会消耗大量 Raspberry 的 CPU?

multithreading - ActiveX 控件是否需要线程同步?

ios - 基于 UIPinch 缩放图像

ios - 设置 Collection View 单元格的动态宽度时出现问题

java - 枚举性能中的单例

ios - 使用 AVPlayer 在 UIView 中播放延时

iOS:如何确定 ScrollView 中对象的 CGPoint

ios - 为什么不将 View 添加到此 UI Animator 中?

ios - 带有子 subview 的 UIView 动画