iOS屏幕截图 - 为什么放大时drawViewHierarchyInRect输出模糊?

时间:2016-04-29 16:00:16

标签: ios screenshot

我试图以编程方式捕获UIWebView。我尝试了两种不同的技术。

renderInContext

UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0)
view.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

drawViewHierarchyInRect

UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0)
view.drawViewHierarchyInRect(CGRect(x: 0, y: 0, width: view.bounds.size.width, height: view.bounds.size.height), afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

以下是保存到png后两种技术的图像输出。捕获源是在我的iPhone 6上的UIWebView中渲染的pdf文件,放大。当我不放大时,两者的输出看起来都一样。

我想尽可能使用drawViewHierarchyInRect,因为它的运行速度要快得多,而且我的应用程序理想情况下每秒会捕获10次屏幕。 renderInContext大约需要100ms,而drawViewHierarchyInRect需要大约25ms。

更新

未缩放时,renderInContext需要100毫秒。完全放大后它会拍4张照片! drawViewHierarchyInRect是常量。

renderInContext output drawViewHierarchyInRect output

0 个答案:

没有答案