我有以下方法来拍摄速度太慢的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秒(!!!)
而且视图已经在屏幕上,可以正确呈现...所以我只需要Pixel即可进入UIImageView ...

我需要支持iOS 6+。

最佳答案

我使用相同的代码来截取一个非常复杂的视图的屏幕截图。我认为您的瓶颈正在为拖放操作使用大图像。也许您可以调整UIImage的大小。

就我而言,iPad2的屏幕截图性能约为100毫秒。

关于ios - 从UIView截屏(UIImage)花费的时间太长,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18016106/

10-15 15:32