Я использую следующий код для рисования и вращения файла PDF.Он отлично работает с iOS 5.x, но под iOS 4.3 появляется только белая страница с ошибкой в отладчике:
недопустимое `Contents ': не массивпотоков.
Ошибка возникает сразу после "CGContextDrawPDFPage (context, pdfPage);"
Почему он работает с iOS 5.x, но не с 4.3.x?Я пробовал разные файлы PDF, но все же получил тот же результат.
Как мне решить эту проблему?
pdfpage определяется как:
- (void)setPage:(CGPDFPageRef)newPage
{
CGPDFPageRelease(self->pdfPage);
self->pdfPage = CGPDFPageRetain(newPage);
}
метод, гдебывает:
-(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);
}