Force a UIView to redraw immediately, instead of during next run loop
Posted
by Justin Kent
on Stack Overflow
See other posts from Stack Overflow
or by Justin Kent
Published on 2010-05-13T22:54:13Z
Indexed on
2010/05/13
23:04 UTC
Read the original article
Hit count: 638
I've created a UIImagePicker / camera view, with a toolbar and custom button for taking a snapshot. I can't really change to using the default way because of the custom button, and I'm drawing on top of the view.
When you hit the button, I want to take a screenshot using UIGetScreenImage(); however, the toolbar is showing up in the image, even if I hide it first:
//hide the toolbar
self.toolbar.hidden = YES;
// capture the screen pixels
CGImageRef screenCap = UIGetScreenImage();
I'm pretty sure this is because even though the toolbar is hidden, it gets redrawn once the function returns and we enter the next run loop - after UIGetScreenImage is called.
I tried making the following addition, but it didn't help:
//hide the toolbar
self.toolbar.hidden = YES;
[self.toolbar drawRect:CGRectMake(0, 0, 320, 52)];
// capture the screen pixels
CGImageRef screenCap = UIGetScreenImage();
I also tried using setNeedsDisplay, but that doesn't work either because once again the draw happens after the current function returns.
Any suggestions? Thanks!
© Stack Overflow or respective owner