2011-03-06 40 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