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