如何在主线程上运行图像动画时获取iphone设备截图?

时间:2012-02-08 09:44:42

标签: iphone

我正在执行图像序列动画是在主线程上。 同时我想在后台拍摄设备屏幕的快照。 通过使用我想制作视频的快照..

谢谢, Keyur Prajapati

3 个答案:

答案 0 :(得分:2)

用于在运行图像动画时截取屏幕截图

使用

[self.view.layer.presentationLayer renderInContext:UIGraphicsGetCurrentContext()];

而不是

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

在运行动画时会截取屏幕截图

iOS使用Core Animation作为渲染系统。每个UIView都有一个CALayer支持。每个可见层树都由表示树支持。图层树包含每个图层的对象模型值,即您为图层属性(A和B)指定值时设置的值。表示树包含当动画发生时当前呈现给用户的值(A和B之间的插值)。

答案 1 :(得分:1)

如果您在CoreAnimation中执行此操作,则可以使用-renderInContext:将图层内容渲染为位图。看看Matt Longs Tutorial。它适用于Mac上的Objective-C,但可以轻松转换为在iPhone上使用。

答案 2 :(得分:1)

创建另一个线程,您可以在其中执行此操作:

    //Create rect portion for image if full screen then 320X480
    CGRect contextRect  = CGRectMake(0, 0, 320, 480);

  // this is whate you need
    UIGraphicsBeginImageContext(contextRect.size);  

    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

  UIImage* viewImage = UIGraphicsGetImageFromCurrentImageContext();

  UIGraphicsEndImageContext();

viewImage 是您需要的图片。

您可以在函数中编写此代码,可以按照5秒或根据您的要求及时调用。

希望这就是你所需要的。