首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 7的屏幕截图

iOS 7的屏幕截图
EN

Stack Overflow用户
提问于 2014-09-18 11:43:46
回答 1查看 172关注 0票数 0

我正在做一个项目,我们希望能够录制一个UIView。我的想法和实现是采取连续屏幕截图,并将他们存储在光盘上,然后在UIView完成后,结合所有的图像,以制作一部电影。现在,我正在使用UIImage来组合和制作一部电影。这似乎是一个相当缓慢的过程,我在网上读过一些东西,比如RecordMyScreen项目,但是使用了私有API,比如IOSurface等等。我只是想知道是否有一个快速的方法来拍摄屏幕截图。我需要每秒钟吃大约25次。现在我正在做这样的事情:

代码语言:javascript
复制
UIGraphicsBeginImageContextWithOptions(self.captureView.frame.size, YES, 0.0);
// CGContextRef context = UIGraphicsGetCurrentContext();
// [self.captureView.layer renderInContext:context];
[self.captureView drawViewHierarchyInRect:weakSelf.captureView.bounds afterScreenUpdates:YES];
UIImage* screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSLog(@"saving image");
[self saveImageToFolder:self.tempFolderPath image:screenShot];

这是在要在后台执行的NSOperationBlock中进行的。保存到磁盘也是在另一个线程上完成的。

我知道AVAssetWriterInputPixelBufferAdaptor需要CVPixelBufferRef来制作这部电影,所以我不确定是否有一种直接从UIView获得这一点的方法?

无论如何,任何帮助都会很好!

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-18 11:53:53

从iOS 7开始就添加了新API,这将提供获取快照的有效方法。

snapshotViewAfterScreenUpdates:将视图呈现为具有不可修改内容的UIView

resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets:同样的事情,但是有可调整大小的嵌入

drawViewHierarchyInRect:afterScreenUpdates::如果您也需要绘制所有子视图(比如标签、按钮.)的话,也是一样的。

您可以将返回的UIView用于任何UI效果,也可以像需要导出时那样将其呈现到图像中。

你也可以试试这个,它对我有用。

代码语言:javascript
复制
- (UIImage *) screenshot {
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);

    [self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25911765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档