J'ai un fichier PDF que je veux dessiner sous forme de contour. Je veux dessiner les premières pages du document, chacune dans leur propre UIImage, à utiliser sur un bouton de sorte que lorsqu'on clique dessus, l'affichage principal navigue jusqu'à la page cliquée. Toutefois, CGContextDrawPDFPage semble utiliser de grandes quantités de mémoire lors de la tentative de dessin de la page. Même si l'image n'est censée être que d'environ 100px, l'application se bloque en dessinant une page en particulier, ce qui, selon Instruments, alloue environ 13 Mo de mémoire pour une seule page.CGContextDrawPDFPage occupant de grandes quantités de mémoire
Voici le code pour le dessin:
//Note: This is always called in a background thread, but the autorelease pool is setup elsewhere
+ (void) drawPage:(CGPDFPageRef)m_page inRect:(CGRect)rect inContext:(CGContextRef) g {
CGPDFBox box = kCGPDFMediaBox;
CGAffineTransform t = CGPDFPageGetDrawingTransform(m_page, box, rect, 0,YES);
CGRect pageRect = CGPDFPageGetBoxRect(m_page, box);
//Start the drawing
CGContextSaveGState(g);
//Clip to our bounding box
CGContextClipToRect(g, pageRect);
//Now we have to flip the origin to top-left instead of bottom left
//First: flip y-axix
CGContextScaleCTM(g, 1, -1);
//Second: move origin
CGContextTranslateCTM(g, 0, -rect.size.height);
//Now apply the transform to draw the page within the rect
CGContextConcatCTM(g, t);
//Finally, draw the page
//The important bit. Commenting out the following line "fixes" the crashing issue.
CGContextDrawPDFPage(g, m_page);
CGContextRestoreGState(g);
}
est-il une meilleure façon de dessiner cette image qui ne prend pas d'énormes quantités de mémoire?
Comment avez-vous procédé à la mise à jour de la vue une fois ce fil terminé? –