我正在执行图像序列动画是在主线程上。 同时我想在后台拍摄设备屏幕的快照。 通过使用我想制作视频的快照..
谢谢, Keyur Prajapati
答案 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秒或根据您的要求及时调用。
希望这就是你所需要的。