iPad上的核心动画截图

时间:2010-12-26 21:16:09

标签: ipad ios core-animation screenshot calayer

我正在使用Core Animation构建一个场景,其外观类似于旧Apple TV上的屏幕保护程序。连续的图像流(每个CALayer)从下到上垂直穿过。为实现此目的,在图层的动画移出视图后结束后,它会重新定位到底部,分配新图像并重新生成。这发生在animationDidStop委托方法中。但是,我注意到如果我在iPad上运行应用程序时截取屏幕截图,则图层永远不会重新定位到底部,并且不会再次显示。我已经解决了这个问题,而且我确信截屏会导致它。这让我觉得拍摄截图对动画时机有影响。所以......

  1. 在iDevice上截图对动画有什么影响?
  2. 有没有更好的方法来达到这个效果?

2 个答案:

答案 0 :(得分:1)

您可以随时尝试根据视图内容以编程方式捕获屏幕截图,然后将其另存为屏幕截图。我不知道你的对象,但这是我以前做过的。截图的所有内容都在 CaptureView

CGRect screenRect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(CaptureView.frame.size);

CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor clearColor] set];
CGContextFillRect(ctx, screenRect);

[CaptureView.layer renderInContext:ctx];

UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIImageWriteToSavedPhotosAlbum(screenImage, nil, nil, nil);
UIGraphicsEndImageContext();

你的动画是静止的UIImageView吗?如果您要检测的图像视图离开屏幕,只需使用frame.origin.y与0比较。

答案 1 :(得分:0)

您可以使用presentationLayer在动画制作动画时捕捉屏幕截图。 即[CaptureView.layer presentationLayer]

您还可以在CALayer的presentationLayer中设置动画时检测触摸。