2010-04-20 5 views
1

기본적으로 수행 할 작업은 이미 렌더링 된 내용 (CGContextDrawPDFPage()를 사용하여 UIView의 그래픽 컨텍스트에 그려진 PDF)을 유사한 UIView에 복사하는 것입니다. PDF를 다시 렌더링하십시오. 아이디어는 UIView에서 애니메이션 변환을 수행하고 나중에 PDF를보다 정확하게 다시 렌더링 할 수 있다는 것입니다. 두 UIViews에 대해 사용자가 확대 한 후에 PDF를 다시 렌더링하는 것이 더 큰 화면의 CATiledLayer를 사용하면 어떤 차이가 있는지 확인합니다.UIView 컨텍스트의 비트 맵 내용을 다른 UIView의 내용으로 복사

팁이 있습니까? 나는 여기서 잃어 버렸어.

+0

에 pdfView의 내용을 저장합니다이 코드 뒷조사 후

CGPDFDocumentRef document = CGPDFDocumentCreateWithURL (filename_url); CGPDFPageRef page = CGPDFDocumentGetPage (document, pageNumber); CGContextDrawPDFPage (context, page); CGPDFDocumentRelease (document); 

다음, 그것과 유사한 코드를 사용하여 그래픽 컨텍스트에서 PDF 페이지를 렌더링 한 가정하면 내 레이어 같아요 .contents는 CAImageProvider이며 이미지 데이터가있는 것으로 보입니다 (적어도 해상도는 정확합니다). 나는 이것을 어떻게 사용하는지 잘 모른다. –

답변

1

당신은 A있는 UIImage

UIGraphicsBeginImageContext(pdfView.bounds.size); 
[pdfView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *pdfViewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+0

이미지를 항상 렌더링하지 않는 한 PDF를 다시 렌더링해야하는데 이는 상당한 오버 헤드가 예상됩니다. –

+0

위의 게시물에 추가 한 것과 비슷한 코드를 사용하여 현재 그래픽 컨텍스트에서 PDF를 이미 렌더링했다고 가정하면 더 낮은 코드를 사용하여 PDF가 다시 렌더링되지 않습니다. 데스크톱의 스크린 샷을 찍는 것처럼 상상해보십시오. – adam

+0

아아아, 이전에 해봤지만 사실 PDF를 다시 렌더링합니다. 내가 CATiledLayer를 사용하고 있다는 사실 때문일 수 있습니까? –

관련 문제