2

我有以下方法可以截取太慢的 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+。

4

1 回答 1

2

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

在我的情况下,iPad2 的屏幕截图性能约为 100 毫秒。

于 2013-08-02T12:08:19.250 回答