在UIScrollView中获取CATiledLayer支持的视图的图像快照

inc*_*nus 5 objective-c calayer uiscrollview catiledlayer

我有一个自定义地图视图,由一个UIScrollView.滚动视图的子视图由a支持CATiledLayer.这里的一切都很棒.平移和缩放会加载新的地图图块,一切运行良好.

我想要做的是将动画视频帧捕获到此滚动视图.基本上,我想创建一个动画更改滚动视图contentOffset和视频的视频zoomScale.

我知道这个概念是合理的,因为我可以获得私有API函数UIGetScreenImage()来捕获应用程序的屏幕,例如10fps,组合这些图像,我得到平滑的回放动画,并具有滚动视图动画使用的时序曲线.

我的问题当然是我无法使用私有API.通过苹果列出的备选方案会在这里给我留下了非常按说一个有效的选项:问一个CALayerrenderInContext,并采取了UIGraphicsGetImageFromCurrentImageContext()从.

但这似乎与CATiledLayer-backed视图无关.捕获的是块状,未缩放的图像,就好像较高分辨率的图块永远不会加载一样.这有点合理,因为CATiledLayer在后台线程中引入性能并且renderInContext从主线程调用可能无法捕获这些更新.即使我也渲染了平铺图层,结果也是相似的presentationLayer.

是否有Apple认可的方式CATiledLayer在包含滚动视图的动画过程中捕获背景视图的图像?或者在任何时候,就此而言?

inc*_*nus 1

顺便说一句,如果您renderLayer:inContext:CATiledLayer支持的视图中正确实现,这是可行的。