问题
I have the following method where I'm trying to do some drawing into an image:
- (UIImage*) renderImage
{
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
//drawing code
UIImage *image = [UIGraphicsGetImageFromCurrentImageContext() retain];
UIGraphicsEndImageContext();
return [image autorelease];
}
When I run this code I noticed that I'm getting hit much harder than I did when I was simply drawing this code in drawRect
of a UIView
. Am I drawing into the wrong graphics context here (ie CGContextRef context = UIGraphicsGetCurrentContext();
)? Or is UIGraphicsGetImageFromCurrentImageContext
just that much more expensive than drawing in drawRect
?
回答1:
The main difference is that the context that you create requires an offscreen rendering, it isn't the same context created in -drawRect. So you are adding an additional memory to the heap that stays until you will release the image.
来源:https://stackoverflow.com/questions/13173933/correct-graphicscontext-when-using-uigraphicsgetimagefromcurrentimagecontext