【发布时间】:2012-07-11 05:19:39
【问题描述】:
我正在尝试从用户可以绘制的视图中获取图像,或者添加一些其他视图。到目前为止,使用 iPad1 和 2 一切正常。 但在 iPad3 上它像狗一样奔跑。 我只是使用图层 renderInContext 方法。
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
UIGraphicsBeginImageContextWithOptions(self.viewDrawableViewContainer.frame.size, NO, [UIScreen mainScreen].scale);
else
UIGraphicsBeginImageContext(self.viewDrawableViewContainer.frame.size);
[self.viewDrawableViewContainer.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
我知道这可能是由等于 ipad2 的 cpu 引起的, 但大约需要 1 秒。用户绘制或添加的越多,渲染所需的时间就越长。有时长达 5 秒,这实在令人无法接受。 那么有没有什么办法可以提高性能呢? 任何可能设置较小渲染质量的机会 - 我不需要以最高视网膜分辨率进行渲染...
如果有任何帮助,我将不胜感激!提前致谢
【问题讨论】:
-
你能预料会得到什么观点吗?如果是这样,您可以在后台进行绘图并缓存结果,这不会冻结设备。
-
好的,谢谢你的提示,我可以在后台创建一个图像,但问题是,用户可能会写一些文本然后点击 go。然后我必须在用户交互后立即进行绘图,因为点击 go 后视图将关闭。但是谢谢,也许我可以在结束动画执行时渲染。我试一试……那么没有其他方法可以提高渲染性能了吗?
-
不幸的是,没有,在基本相同的 CPU 上生产 4 次,因为许多像素只会降低性能。用动画掩盖它是解决问题的好方法,这也是 Apple 的做法。如果您允许用户绘制视图,那么您要绘制什么?是否没有 UIImage 支持您可以立即拉出而不是将视图渲染到上下文的视图?
-
用户可以画出他喜欢的任何东西。它就像一支手指铅笔,您可以在其中绘制您想要的任何东西。此外,他还可以添加注释,以便通过键盘输入一些文本...