gpt4 book ai didi

objective-c - 从 view.layer 的 presentationLayer 捕获图像

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:36 25 4
gpt4 key购买 nike

最近我尝试捕捉带有动画元素的 UIWebView 的屏幕截图。问题是它们出现在屏幕截图中的原始位置,就像没有动画一样。我尝试使用以下代码来解决此问题:

CGRect screenRect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(self.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor clearColor] set];
CGContextFillRect(context, screenRect);
[[self.layer presentationLayer] renderInContext:context];
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenImage;

但它使我的应用程序因 EXC_BAD_ACCESS 而崩溃。一些研究表明,这种行为是由于快速变化的 presentationLayer 造成的;所以当我尝试 renderInContext 时,它实际上并不存在,[self.layer presentationLayer] 现在返回另一个 CALayer 对象。

所以问题是如何从动画层的当前状态获取图像,或者(这也可能是一个解决方案)如何阻止它在截屏时更改 presentationLayer?

[更新]更有趣:presentationLayer 似乎是空的,因为它的内容是 nil,正如我在调试器中看到的...

最佳答案

好的,问题出在 CSS 中:

-webkit-transform: perspective(100px) translate3d(200px, 100px, -50px) rotateY(15deg);

任何 perspective 或 rotateY/rotateX 都会杀死元素在屏幕截图上的位置,取自 view.layer renderInContext。因此无法捕获网页上“真正的 3d”定位元素。

关于objective-c - 从 view.layer 的 presentationLayer 捕获图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12288595/

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