从UIView获取截图(UIImage)需要太长时间

时间:2013-08-02 11:44:20

标签: ios performance uiimage core-graphics screenshot

我有以下方法来截取UIView的截图(UIImage)太慢了

+ (UIImage *)imageWithView:(UIView *)view
{
  CGSize size = view.bounds.size;

  UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
  CGContextRef context = UIGraphicsGetCurrentContext();

  [view.layer renderInContext:context];
  UIImage * image = UIGraphicsGetImageFromCurrentImageContext();

  UIGraphicsEndImageContext()

  return image;
}

在我的iPad上,我现在有一个应用程序需要这种方法来制作拖放视图的副本。这个视图是带圆角的视图,因此不是不透明的(如果我将isOpaque参数设置为YES,我认为这没有区别)... 截图的视图还包含一个UITableView,其中包含相当复杂的条目......

您对如何提高屏幕截图的速度有任何建议吗?现在,对于更大的桌面视图(可能是20个条目),它需要大约1秒钟(!!!) 并且视图已经在屏幕上,正确呈现...所以我只需要像素,但进入UIImageView ......

我需要支持iOS 6 +。

1 个答案:

答案 0 :(得分:2)

我使用相同的代码来截取非常复杂的视图。我认为你的瓶颈是使用大图像进行拖放。也许你可以调整UIImage的大小。

在我的情况下,iPad2的性能大约是100毫秒的截图。