在iOS7中将屏幕内容捕获为UIImage

Posted

技术标签:

【中文标题】在iOS7中将屏幕内容捕获为UIImage【英文标题】:Capture off screen content as UIImage in iOS7 【发布时间】:2014-02-18 05:34:16 【问题描述】:

我在 UIScrollView 中有一个 UIView,它比屏幕高得多。我的代码是这样的

UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, -500.0f, 320.0f, 2000.0f)];
[_scrollView addSubview:contentView];

我想捕捉 contentView 的图像

//Screen capture.
UIGraphicsBeginImageContextWithOptions(contentView.frame.size, NULL, 0.0f);
[self.view drawViewHierarchyInRect:contentView.bounds afterScreenUpdates:NO];
UIImage* viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

上面的代码可以在模拟器上运行,但不能在实际设备上运行(iPod 5th gen)

如果我捕获 scrollView 而不是 contentView,它可以正常工作,但只会捕获屏幕上显示的内容。有什么想法吗?

【问题讨论】:

【参考方案1】:

使用scrollView.contentOffset。获取当前在屏幕上的视图的框架。

【讨论】:

这不是我想要的,我只是希望可以一​​次捕获滚动视图中的所有内容。我现在只能捕捉屏幕上的内容,如果我更改 drawViewHierarchyInRect 的偏移量,它只会返回一个空图像【参考方案2】:

好吧,我认为这可能是不可能的,因为 ios 不会为了获得更多性能和电池寿命而绘制屏幕内容。

【讨论】:

以上是关于在iOS7中将屏幕内容捕获为UIImage的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 canDisplayBannerAds 的 iOS7 应用程序中将 iAd 移动到屏幕顶部?

如何在 ios7 中将 UIView 对象添加到 self.view.window?

在 Flutter Web 中将画布捕获为图像

在 iOS 7+ 中将照片大小调整为 5 英寸高 x 4.5 英寸宽

在屏幕之间切换时边缘闪烁ios7

如何产生类似于 iOS 7 模糊视图的效果?