gpt4 book ai didi

objective-c - 在 UIScrollView 中获取 CATiledLayer 支持的 View 的图像快照

转载 作者:太空狗 更新时间:2023-10-30 03:54:55 24 4
gpt4 key购买 nike

我有一个由 UIScrollView 组成的自定义 map View 。 ScrollView 的 subview 由 CATiledLayer 支持。这里的一切都很好。平移和缩放加载新的 map block ,一切都表现良好。

我想做的是将动画视频帧捕获到此 ScrollView 。本质上,我想创建一个 ScrollView 的 contentOffsetzoomScale 动画更改视频。

我知道这个概念是合理的,因为我可以获得私有(private) API 函数 UIGetScreenImage() 以例如 10fps 的速度捕获应用程序的屏幕,组合这些图像,然后我得到播放动画平滑并具有 ScrollView 动画使用的时间曲线。

当然,我的问题是我不能使用私有(private) API。了解 Apple 概述的替代方案 here给我留下了几乎一个据称有效的选项:请求 CALayerrenderInContext 并从中获取 UIGraphicsGetImageFromCurrentImageContext()

不过,这似乎不适用于 CATiledLayer 支持的 View 。捕获的是 block 状、未缩放的图像,就好像更高分辨率的图 block 从未加载过一样。这在某种程度上是有道理的,因为 CATiledLayer 在后台线程中绘制性能并且从主线程调用 renderInContext 可能无法捕获这些更新。即使我也渲染平铺层的 presentationLayer,结果也是相似的。

在包含 ScrollView 的动画过程中,是否有 Apple 认可的方式来捕获 CATiledLayer 支持的 View 的图像?或者在任何时候,就此而言?

最佳答案

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

关于objective-c - 在 UIScrollView 中获取 CATiledLayer 支持的 View 的图像快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9122388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com