-renderInContext:
自出现以来已被广泛使用,但由于无法渲染 OpenGL 层,AVPreviewLayer(可能是因为它是一种 OpenGL 层),我仍然无法正确渲染 CATiledLayer。
iOS7 引入了 2 个新的 API 来获取屏幕截图,一个是-snapshotViewAfterScreenUpdates:
返回特定视图 ( _UIReplicantView
),-drawViewHierarchyInRect:afterScreenUpdates:
最后一个是一种替代-renderInContext
,不幸的是,它似乎有相同的限制。
-snapshotViewAfterScreenUpdates:它似乎也适用于 OpenGL 和 AVPreviewLayer,不幸的是,如果你想做特定的动画或将内容用作某些东西的背景(例如 uibutton),这样的视图并不是很有用。我试图从返回的视图中删除内容,但我仍然没有运气。
有人试过了吗?
问问题
5144 次
1 回答
1
我一直在努力解决这个问题,最初我们通过连接到 NSRunLoop 并渲染到图像然后将它们合并在一起来解决它。真的很乱。
然后我们找到了一段似乎可以解决这个问题的代码,但你必须准备好跳出框框思考一下。
该框架记录了 UIWindow 的视频,然后我们只是停止记录。将它推过 AVAssetImageGenerator (或类似的东西),然后抓取图像。
正如我所说,这是一种非常奇怪的解决方法,但它似乎对我们来说没问题。
(ASScreenRecorder) 的代码可以在这个库中找到。
https://github.com/alskipp/ASScreenRecorder
我们产品中的菜单之一是 OpenGL,有些有视频背景!这对我们来说非常有效。但我不能确定这是否是我们对 OpenGL 的实现和使用所特有的。尽管作为他的示例视频节目,它确实适用于相机视图。
于 2015-04-16T13:27:58.523 回答