ユーザーがパスを追加するように求められたときに表示されるビューのスナップショットを取得しようとしています。
目標は、特定の 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 は空白の画像です