0

私はこれを理解するのに非常に苦労しています。本当に助けていただければ幸いです。

基本的に、ユーザーがボタンを押したときに生成される PDF ドキュメントのアセット ライブラリに保存されている写真を描画しようとしています。

次のコードを使用して、pdf のアプリケーションのリソース フォルダーに含まれている .png 画像を問題なく描画できます。

- (void) drawImage
{
    UIImage * demoImage = [UIImage imageNamed:@"demo.png"];
    [demoImage drawInRect:CGRectMake( (pageSize.width - demoImage.size.width/2)/2, 350, demoImage.size.width/2, demoImage.size.height/2)];
}

ただし、最初にブロックを使用してアセット ライブラリから写真を取得する必要があります。例えば:

NSURL *url = [[NSURL alloc] initWithString:image.photo];
        ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];

        [library assetForURL:url resultBlock:^(ALAsset *asset) {

            ALAssetRepresentation *rep = [asset defaultRepresentation];            
            self.filename = [rep filename];
            NSLog(@"filename for image is: %@", self.filename);

            CGImageRef iref = [rep fullResolutionImage];
            if (iref) 
            {
                self.pdfImage = [UIImage imageWithCGImage:iref];
                NSLog(@"image height %f", self.pdfImage.size.height);

            }

            [self.pdfImage drawInRect:CGRectMake( (pageSize.width - self.pdfImage.size.width/2)/2, 350, self.pdfImage.size.width/2, self.pdfImage.size.height/2)];

        } 
            failureBlock:^(NSError *error) 
        {

            NSLog(@"Couldn't load asset %@ => %@", error, [error localizedDescription]);

        }];

    }

ファイル名は、.jpg ファイルとしてログに正常に出力されています。また、 self.pdfImage.size.height がログに出力され、画像を見つけていることがわかります。

ただし、drawInRect メソッドが呼び出されるまでに画像は null であり、エラーがスローされます。Invalid Context: 0x0.

4

0 に答える 0