我用它可以在任一方向使用,并包含许多子视图的一个UIScrollView工作:捕获的UIScrollView关闭屏幕内容
// in viewDidLoad
mainScrollView = (UIScrollView *)self.view;
mainScrollView.contentSize = CGSizeMake(1024, 1432);
我试图捕捉整个滚动视图的屏幕截图包括其所有子视图,包括当前在屏幕上不可见的内容。以下仅捕获屏幕上显示内容可见在捕获时间:
// make screenshot
UIGraphicsBeginImageContext(mainScrollView.bounds.size);
[mainScrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// save screenshot in docs dir
NSData *pngData = UIImagePNGRepresentation(screenImg);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
[pngData writeToFile:[documentsDir stringByAppendingPathComponent:@"screen1.png"]
options:NSDataWritingAtomic error:nil];
加入使得画面拍摄前以下是我能罚款使我能够捕获整个滚动视图的唯一途径:
// capture off-screen content
mainScrollView.frame = CGRectMake(0, 0, 1024, 1432);
这个捕获很好,包括所有子视图。问题是,一旦我制作了屏幕截图,我的滚动视图变得无法响应,因此我无法再滚动(或在纵向模式下横向移动)。如果我旋转设备,问题似乎自行解决,我可以正常滚动和平移。 我敢肯定,我错过了一些非常简单的事情,这是让屏幕截图拍摄后我的滚动视图正常工作所必需的。 任何建议非常感谢!
我应该添加,以防万一它是相关的,这是一个iPad应用程序。 – beev 2011-04-10 11:15:27