Я пытаюсь сделать снимок представления, отображаемого, когда пользователю предлагается добавить пропуск.
Цель состоит в том, чтобы сгенерировать изображение из заданного pkpass.
Я надеялся, что что-то вроде этого может работать:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"columbus" ofType:@"pkpass"];
PKPass *pass = [[PKPass alloc] initWithData:[NSData dataWithContentsOfFile:filePath] error:nil];
PKAddPassesViewController *pkAddPassesViewController = [[PKAddPassesViewController alloc] initWithPass:pass];
[self presentViewController:pkAddPassesViewController animated:YES completion:^(){
UIImage *image = [pkAddPassesViewController.view captureView];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.view addSubview:imageView];
}];
С CaptureView:
- (UIImage *)captureView
{
CGRect screenRect = self.bounds;
UIGraphicsBeginImageContext(self.bounds.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor clearColor] set];
CGContextFillRect(ctx, screenRect);
[self.layer renderInContext:ctx];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
Угадай, что? Я ошибался:
Я пытался:
Использование обратного вызова завершения и обратного вызова animationFinished
Установка скрытого свойства
Использование таймера, чтобы убедиться, что пропуск был виден на экране, когда был сделан снимок экрана.
Создание снимка родительского представления
У меня закончились идеи, поэтому любое предложение приветствуется. Спасибо заранее.
О, я загрузил здесь минимальный проект: https://github.com/framp/demo-capturing-passbook
РЕДАКТИРОВАТЬ: я могу сделать снимок других представлений, и я могу просто загрузить другой UIImage с помощью приведенного выше кода. UIImage, который возвращается, представляет собой пустое изображение.