Захват содержимого UIScrollView вне экрана

Я работаю с UIScrollView, который может использоваться в любой ориентации и содержит несколько подпредставлений:

// in viewDidLoad

mainScrollView = (UIScrollView *)self.view;

mainScrollView.contentSize = CGSizeMake(1024, 1432);

I ' m пытается сделать снимок экрана всего режима прокрутки со всеми его частями, включая то, что в данный момент не отображается на экране. Следующее захватывает только то, что видно на экране во время захвата:

// 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);

Этот снимок прекрасен и включает в себя все подвиды. Проблема в том, что после того, как я сделал снимок экрана, мое представление прокрутки перестает отвечать, поэтому я больше не могу прокручивать (или панорамировать в сторону, если в портретном режиме). Если я поверну устройство, проблема, похоже, исчезнет сама собой, и я могу нормально прокручивать и панорамировать.

// 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);

Этот снимок хорош и включает все подвиды. Проблема в том, что после того, как я сделал снимок экрана, мой вид прокрутки перестает отвечать, поэтому я больше не могу прокручивать (или панорамировать в сторону, если в портретном режиме). Если я поверну устройство, проблема, похоже, исчезнет сама собой, и я могу нормально прокручивать и панорамировать.

// 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);

Этот снимок хорош и включает все подвиды. Проблема в том, что после того, как я сделал снимок экрана, мой вид прокрутки перестает отвечать, поэтому я больше не могу прокручивать (или панорамировать в сторону, если в портретном режиме). Если я поверну устройство, проблема, похоже, исчезнет сама собой, и я могу нормально прокручивать и панорамировать. Я уверен, что мне не хватает чего-то очень простого, что необходимо для нормальной работы режима прокрутки сразу после того, как сделан снимок экрана. Любые предложения очень ценны!

5
задан beev 10 April 2011 в 11:11
поделиться