我有一个自定义地图视图,它由UIScrollView
. 滚动视图的子视图由CATiledLayer
. 在这里一切都很好。平移和缩放会加载新的地图图块,一切都运行良好。
我想要做的是捕捉动画视频帧到这个滚动视图。本质上,我想为滚动视图contentOffset
和zoomScale
.
我知道这个概念是合理的,因为我可以获得私有 API 函数UIGetScreenImage()
来以 10 fps 的速度捕获应用程序的屏幕,组合这些图像,并且我可以获得平滑的播放动画并且具有滚动视图动画使用的时序曲线。
当然,我的问题是我不能使用私有 API。仔细阅读 Apple在这里列出的替代方案,给我留下了一个几乎可以说是有效的选择:询问并CALayer
从中获取。renderInContext
UIGraphicsGetImageFromCurrentImageContext()
不过,这似乎不适用于支持的CATiledLayer
视图。捕获的是块状、未缩放的图像,就好像从未加载过更高分辨率的图块一样。这在一定程度上是有道理的,因为CATiledLayer
为了性能而引入后台线程并且renderInContext
从主线程调用可能无法捕获这些更新。即使我也渲染了平铺层,结果也是相似的presentationLayer
。
CATiledLayer
在包含滚动视图的动画过程中,是否有苹果认可的方法来捕获支持视图的图像?或者在任何时候,就此而言?