_UIReplicantView和snapshotViewAfterScreenUpdates如何获取其内容?

And*_*rea 24 iphone screenshot uiview ios

-renderInContext:自从它出现以来已被广泛使用,但由于不可能渲染OpenGL层,AVPreviewLayer(可能因为是一种OpenGL层)而且我仍然无法正确渲染CATiledLayer.
随着iOS7引入了2个新的API来获取屏幕截图,一个是-snapshotViewAfterScreenUpdates:返回一个特定的视图(_UIReplicantView)而-drawViewHierarchyInRect:afterScreenUpdates:最后一个是一种替代-renderInContext,不幸的是它似乎有相同的限制.
-snapshotViewAfterScreenUpdates:它似乎也适用于OpenGL和AVPreviewLayer,不幸的是,如果你想做特定的动画或使用内容作为某些东西(如uibutton)的背景,这样的视图不是很有用.我试图从返回的视图中删除内容,但我仍然没有运气.
有人试过吗?

Adr*_*n_H 1

我一直在努力解决这个问题,最初我们通过挂钩 NSRunLoop 并渲染到图像然后将它们合并在一起来解决它。真的很乱。

然后我们找到了一段代码似乎可以解决这个问题,但你必须准备好跳出框框思考。

该框架记录了 UIWindow 的视频,然后我们就停止了记录。将其推入 AVAssetImageGenerator (或类似的东西),然后抓取图像。

正如我所说,这是一种非常奇怪的解决方法,但它似乎对我们来说没问题。

(ASScreenRecorder) 的代码可以在这个库中找到。

https://github.com/alskipp/ASScreenRecorder

我们产品中的菜单之一是 OpenGL,有些还有视频背景!这对我们来说非常有效。但我无法确定这是否是我们 OpenGL 的实现和使用所特有的。正如他的示例视频所示,它确实适用于摄像机视图。