2011-03-06 38 views
0

我加載一個CGPDFDocument,並稱作爲子層到一個UIView(myContentView),然後加入到myContentView一個UIScrollView。這工作正常。現在我想允許用戶旋轉PDF,如果他們選擇。這很容易讓PDF最初一些rotation-顯示我只是做在這裏:旋轉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,這看起來像是有效,但做完之後,我無法再放大/縮小PDF ......我想我需要的是強制drawLayer再次被調用在「輪換」中具有新的價值......我該怎麼做?

謝謝, 史蒂夫

回答

0

爲了用信號,該層需要重新繪製,向它發送一個setNeedsDisplaysetNeedsDisplayInRect:消息。您必須將所需的旋轉角度存儲在ivar /屬性中,並從drawLayer:inContext:訪問該值。

+0

還是什麼都沒有。我已經嘗試了幾種方法:節省了裁判的CATiledLayer作爲伊娃,然後調用上setNeedsDisplay ..也試圖通過scrollView.subviews訪問的CALayer [0] .sublayers [0],並呼籲該setNeedsDisplay ..既不已經工作了。我將自轉存儲爲ivar,以便每次都能正確更新。不調用在drawLayer中設置的斷點。 –

+0

基於一些谷歌搜索,我開始懷疑這是我在iOS SDK 4.x的錯誤。 –

0

嘗試在您的圖層上調用setNeedsDisplay