0

PDF を境界の矩形にレンダリングするカスタム ビューを作成しています。
以下のコードを貼り付けました:

CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
CGContextFillRect(context, self.bounds);

CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
CGFloat scale = MIN(self.bounds.size.width / pageRect.size.width, self.bounds.size.height / pageRect.size.height);
CGContextSaveGState(context);
CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextScaleCTM(context, scale, scale);    
CGContextDrawPDFPage(context, self.page);
CGContextRestoreGState(context);

私の質問は、drawRect メソッドで上記のコードを使用すると、黒い四角形が表示されるだけです。drawLayer: inContext: メソッドで使用すると、正常に動作します。何が原因でしょうか?

PS : drawRect を使用する場合、メソッド UIGraphicsGetCurrentContext() を使用して現在のグラフィックス コンテキストを取得します。

4

1 に答える 1

3

このコードは実際にはうまく機能します..ブレークポイントを追加し、-drawrectメソッドにヒットすることを確認します

 CGContextRef context = UIGraphicsGetCurrentContext();
NSString *filePath = [[NSBundle mainBundle]
                      pathForResource:@"Trial" ofType:@"pdf"];
NSURL *url = [[NSURL alloc] initFileURLWithPath:filePath];
CGPDFDocumentRef document = [self openDocument:(CFURLRef)url];
[url release];

CGPDFPageRef docPageRef =CGPDFDocumentGetPage(document, 1);

CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
CGContextFillRect(context, self.bounds);

CGRect pageRect = CGPDFPageGetBoxRect(docPageRef, kCGPDFMediaBox);
CGFloat scale = MIN(self.bounds.size.width / pageRect.size.width, self.bounds.size.height / pageRect.size.height);
CGContextSaveGState(context);
CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextScaleCTM(context, scale, scale);
CGContextDrawPDFPage(context, docPageRef);
CGContextRestoreGState(context);

私はこれをdrawrectで使用しましたが、正常に機能しました。

すべての参照がdrawrectに提供している値を取得していることを 確認してくださいこれを確認してください

于 2012-09-18T13:11:19.090 に答える