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