2011-03-06 3 views
0

CGPDFDocument를로드하고 UIView (myContentView)에 하위 레이어로 추가 한 다음 myContentView를 UIScrollView에 추가합니다. 그건 잘 작동합니다. 이제 사용자가 원하는 경우 PDF를 회전 할 수있게하려고합니다. PDF를 초기에 약간의 로테이션과 함께 표시하는 것은 쉽습니다. 여기에서 수행합니다.회전 CGPDFDocument/페이지

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx { 
    CGContextSaveGState (ctx); 
    CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0); 
    CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx)); 
    CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height); 
    CGContextScaleCTM(ctx, 1.0, -1.0); 
    CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(myPageRef, kCGPDFCropBox, layer.bounds, rotation, true)); 
    CGContextDrawPDFPage(ctx, myPageRef); 
    CGContextRestoreGState (ctx); 
} 

하지만 초기로드 후에 어떻게 할 수 있습니까?

참고 : 작동하는 것처럼 보이는 myContentView를 회전하려했지만 더 이상 확대/축소 할 수 없습니다. "로테이션"에 새로운 가치가 있습니다. 어떻게해야합니까?

덕분에, 스티브

답변

0

는 그것을 setNeedsDisplay 또는 setNeedsDisplayInRect: 메시지를 보내 레이어가 다시 그려야 할 것을 통지합니다. ivar/속성에 원하는 회전 각도를 저장하고 drawLayer:inContext:에서 해당 값에 액세스해야합니다.

+0

아직 아무것도. 나는 몇 가지 방법을 시도했다 : ivar로 CATiledLayer에 대한 ref를 저장 한 다음 그 setNeedsDisplay를 호출한다. 또한 scrollView.subviews [0] .sublayers [0]을 통해 CALayer에 액세스하려고 시도하고 그 setNeedsDisplay를 호출하지 않았다. 일했다. 나는 ivar로 회전을 저장하므로 매번 제대로 업데이트됩니다. drawLayer에 설정된 중단 점은 호출되지 않습니다. –

+0

인터넷 검색을 기반으로 iOS SDK 4.x 버그가 의심됩니다. –

0

당신의 레이어에서 setNeeds 디스플레이 호출 시도