I've got exactly the same problem. I tried debuggin with
UIViewExtras and found that even after hiding the status bar I still have this:
Code:
- (void)viewWillAppear:(BOOL)animated {
NSLog(@"frame before = %@", NSStringFromCGRect([[UIApplication sharedApplication] statusBarFrame]));
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
NSLog(@"frame after = %@", NSStringFromCGRect([[UIApplication sharedApplication] statusBarFrame]));
// later...
[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
NSLog(@"\n%@", [self.view.window description]);
gives:
Code:
2009-02-24 01:18:16.539 Unitron[62822:20b] frame before = {{0, 0}, {320, 20}}
2009-02-24 01:18:16.540 Unitron[62822:20b] frame after = {{0, 0}, {0, 0}}
+ UIWindow retain:2 - tag:0 - bgcolor:(r:255 g:255 b:255 a:1.00)
bounds: x:0 y:0 w:320 h:480 - frame: x:0 y:0 w:320 h:480 - center: x:160, y:240
++ UILayoutContainerView retain:4 - tag:0 - bgcolor:(r:0 g:0 b:0 a:1.00)
bounds: x:0 y:0 w:320 h:460 - frame: x:0 y:20 w:320 h:460 - center: x:160, y:250
....
So that the frame on that second view looks like the culprit (y=20). But if I set it directly it totally screws up the display of all of the views, like haywire. So, that didn't work.
Has anyone figured this out? This is driving me INSANE!!!!!!!!


