最近,我尝试使用动画元素捕获 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,正如我在调试器中看到的那样......