如何更快地截取 UIView 截图?

Posted

技术标签:

【中文标题】如何更快地截取 UIView 截图?【英文标题】:how to take a UIView screenshot faster? 【发布时间】:2013-10-07 06:38:15 【问题描述】:

我正在制作一个字典应用程序,它允许用户通过触摸屏幕中的单词来查找单词定义,屏幕上会出现一个放大镜并跟随用户的手指。我已经通过截取视图并将图像分配给maginifer图像视图来实现它,这是一个UIImageView,但是,为了截取屏幕截图,方法[self.layer renderInContext:c];花费了太多时间,有没有其他方法可以做它?也许 openGL 会有所帮助?

在使用instruments->core动画分析我的应用程序后,显示放大镜只有9 fps,但如果在UITextView中显示系统默认放大镜则为30 fps,我不知道为什么系统这么快

【问题讨论】:

【参考方案1】:

您可以在放大镜视图中使用完全相同的视图,并将位置更改为可见的单词。

【讨论】:

有一个问题,如果我需要将maginifer中的视图放大,我需要设置view.transform,但是原视图也会受到影响 您必须使用原始视图的副本。 但 UIView 不支持复制方式 yourNewView=previewousView.【参考方案2】:

有new methods in ios 7 高度优化:

– snapshotViewAfterScreenUpdates:
– resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets:
– drawViewHierarchyInRect:afterScreenUpdates:

但是它们在以前的版本中不可用。

【讨论】:

以上是关于如何更快地截取 UIView 截图?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在截取uiview的屏幕截图时设置图像大小?

VC++截图编程:如何能完整地截图?要求是能够截取层级窗口的方法。

如何在不将其添加到子视图的情况下截取 uiview?

在iOS上的应用程序中截取屏幕截图的方法是什么?

里面有 UIScrollView 的 UIView 截图

如何捕获用于过渡的屏幕截图