次のコードを使用して、PDFファイルを描画して回転します。それはiOS 5.xのと完全に正常に動作しますが、iOSの4.3の下でちょうど白ページには、デバッガでエラーで現れる:iOS 4.3 PDFファイルレンダリングの問題
無効 `内容:ストリームのない配列。
「CGContextDrawPDFPage(context、pdfPage);」の直後にエラーが発生します。
なぜiOS 5.xでは動作しますが、4.3.xでは動作しませんか?私は別のPDFファイルを試しましたが、私は同じ結果を得ました。
どのようにこの問題を解決できますか?それが起こる方法
- (void)setPage:(CGPDFPageRef)newPage
{
CGPDFPageRelease(self->pdfPage);
self->pdfPage = CGPDFPageRetain(newPage);
}
:
pdfpageのように定義されたPDF仕様書によれば
-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context
{
// First fill the background with white.
CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
CGContextFillRect(context,self.bounds);
CGContextSaveGState(context);
int rotate = CGPDFPageGetRotationAngle(pdfPage);
switch (rotate) {
case 0:
CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
CGContextScaleCTM(context, 1, -1);
break;
case 90:
CGContextScaleCTM(context, 1.0, -1.0);
CGContextRotateCTM(context, -M_PI/2);
break;
case 180:
case -180:
CGContextScaleCTM(context, 1, -1);
CGContextTranslateCTM(context, self.bounds.size.width, 0);
CGContextRotateCTM(context, M_PI);
break;
case 270:
case -90:
CGContextTranslateCTM(context, self.bounds.size.height, self.bounds.size.width);
CGContextRotateCTM(context, M_PI/2);
CGContextScaleCTM(context, -1, 1);
break;
}
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetRenderingIntent(context, kCGRenderingIntentDefault);
CGContextScaleCTM(context, myScale,myScale);
CGContextDrawPDFPage(context, pdfPage); // the error shows up right after executing this line
CGContextRestoreGState(context);
}
「pdfPage」とは何ですか?それが正しく初期化されているかどうかを確認 –
投票のダウン/アップは問題の解決に役立たないことにご注意ください! –
@MitulNakumは適切に初期化されていますが、ios 5.xでは動作しますが、ios 4.3.xでは動作しません。コードを更新しました。助けてくれてありがとう。 –