在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?