我有一个由UIScrollView
组成的自定义地图视图。滚动视图的子视图由CATiledLayer
支持。这里的一切都很棒。平移&缩放会加载新的地图图块,并且所有内容都可以正常运行。拍摄UIScrollView中支持CATiledLayer的视图的图像快照
我想要做的是捕捉动画视频帧到这个滚动视图。实质上,我想创建一个动画更改视频的滚动视图的contentOffset
和zoomScale
。
我知道这个概念很完美,因为我可以获得私人API函数UIGetScreenImage()
以10fps的速度捕捉应用程序的屏幕,合并这些图像,并获得流畅的播放动画,并使用时序曲线滚动视图动画。
我的问题当然是我不能使用私有API。通过苹果here概述的替代方案,给我留下了几乎所有有效的选项:询问CALayer
到renderInContext
并从中取出UIGraphicsGetImageFromCurrentImageContext()
。
虽然这似乎不适用于CATiledLayer
-backed视图。块状,未缩放的图像就是捕获的图像,就好像更高分辨率的图块永不加载。考虑到CATiledLayer
在后台线程中绘制性能并从主线程调用renderInContext
可能无法捕获这些更新,这有点合理。即使我也渲染平铺图层presentationLayer
,结果也是类似的。
在包含滚动视图的动画过程中,是否有苹果认可的方式捕获CATiledLayer
背视图的图像?或者在任何时候,对于这个问题?
有人贴出答案在这里:http://stackoverflow.com/questions/5526545/render-large-catiledlayer-into-smaller-区域 – 2012-06-03 12:16:42