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

时间:2014-02-18 05:34:16

标签: ios objective-c uiscrollview snapshot-view

我在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,它可以正常工作,但只会捕获屏幕上显示的内容。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

好吧,我认为这可能是不可能的,因为iOS不会提取屏幕内容以获得更高的性能和电池寿命。