[UIPrintPageRenderer drawPageAtIndex : inRect :]를 사용하여 네 개의 webView를 pdf로 변환하려고합니다. 그러나 iOS 8.1.1에서는이 지점에 도달하면 중단됩니다. 오류 메시지가 없으며 계속 시도하면 코드가 계속 중단됩니다. 다른 사람이이 문제를보고이 문제를 해결할 방법을 찾았습니까?iOS 8.1.1 drawPageAtIndex가 응답하지 않습니다.
렌더러에서 paperRect 및 printableRect를 설정하면 멈춤이 발생합니다. 해당 행을 밖으로두면 앱이 멈추지 않지만 결과 PDF는 비어 있습니다.
int i = 0;
UIPrintPageRenderer *renderer = [[UIPrintPageRenderer alloc] init];
for(UIWebView *webView in webViews) {
[renderer addPrintFormatter:webView.viewPrintFormatter startingAtPageAtIndex:i++];
}
CGRect paperRect = CGRectMake(0, 0, 612, 792);
CGRect printableRect = CGRectInset(paperRect, 20, 20);
[renderer setValue:[NSValue valueWithCGRect:paperRect] forKey:@"paperRect"];
[renderer setValue:[NSValue valueWithCGRect:printableRect] forKey:@"printableRect"];
NSMutableData *pdfData = [NSMutableData data];
// Render the html into a PDF
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil);
for (NSInteger i=0; i < [renderer numberOfPages]; i++)
{
UIGraphicsBeginPDFPage();
CGRect bounds = UIGraphicsGetPDFContextBounds();
[renderer drawPageAtIndex:i inRect:bounds]; <-- Hangs here
}
UIGraphicsEndPDFContext();
와일드 루프 내에서 주 스레드에서 집중적 인 기능을 수행하려고합니다. 대신 NSOperationQueue를 사용해보십시오. –
위의 코드를 업데이트했습니다. 위의 코드는 iOS 7.1에서 정상적으로 실행됩니다. iOS 8.1에서는 코드가 중단됩니다. 렌더러에서 paperRect 및 printableRect를 설정하기위한 호출을 제거하면 코드가 iOS 8.1에 멈추지 않지만 결과 PDF는 비어 있습니다. – DCG