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