_UIReplicantView和snapshotViewAfterScreenUpdates如何获取其内容?

时间:2013-10-24 13:14:36

标签: ios iphone uiview screenshot

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

1 个答案:

答案 0 :(得分:1)

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

然后我们发现了一段似乎可以解决这个问题的代码,但你必须准备好在框外思考一下。

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

正如我所说,解决它是一种非常奇怪的方式,但它似乎对我们没用。

此库中可以找到(ASScreenRecorder)的代码。

https://github.com/alskipp/ASScreenRecorder

我们产品中的一个菜单是OpenGL,有些还有视频背景!这对我们来说非常有效。但我不能确定它是否是我们实现和使用OpenGL的特别之处。尽管如他的视频节目所示,它确实适用于相机视图。