CALayer and Off-Screen Rendering

Posted by Luke Mcneice on Stack Overflow See other posts from Stack Overflow or by Luke Mcneice
Published on 2010-09-30T14:03:39Z Indexed on 2010/12/22 14:54 UTC
Read the original article Hit count: 289

I have a Paging UIScrollView with a contentSize large enough to hold a number of small UIScrollViews for zooming, The viewForZoomingInScrollView is a viewController that holds a CALayer for drawing a PDF page onto. This allows me to navigate through a PDF much like the ibooks PDF reader.

The code that draws the PDF (Tiled Layers) is located in:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx;

And simply adding a 'page' to the visible screen calls this method automatically. When I change page there is some delay before all the tiles are drawn, even though the object (page) has already been created.

What i want to be able to do is render the next page before the user scrolls to it, thus preventing the visible tiling effect. However, i have found that if the layer is located offscreen adding it to the scrollview doesn't call the drawLayer.

Any Ideas/common gotchas here?

I have tried:

[viewController.view.layer setNeedsLayout]; 
[viewController.view.layer setNeedsDisplay];

NB: The fact that this is replicating the ibooks functionally is irrelevant within the context of the full app.

© Stack Overflow or respective owner

Related posts about cocoa-touch

Related posts about ipad