【问题标题】:Taking a Screenshot (UIImage) from UIView takes far too long从 UIView 截取屏幕截图 (UIImage) 需要很长时间
【发布时间】:2013-08-02 11:44:19
【问题描述】:

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

【问题讨论】:

    标签: ios performance uiimage core-graphics screenshot


    【解决方案1】:

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

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

    【讨论】:

    • 嗯,截图没那么大。它大约是 320 x 500 ......我想我找到了我的瓶颈......似乎被截图的视图有一个图层阴影和圆角。一旦我删除它,它现在要快得多......我想我会将这些属性应用到 UIImages 的 ImageView 上,然后从屏幕截图中得到,我应该没问题。感谢您的回答...
    猜你喜欢
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2014-09-26
    相关资源
    最近更新 更多