I'm adding a UIImageView to the UIViewController's UIView as I would normally, with the frame of the image view being the same as self.view
to make sure that the image will cover the whole view. However, there is a roughly 20px padding between the status bar and the imageView which I can't seem to get rid of.
I've tried NSLogging the different frames, and receiving the following results:
NSLog(@"ImageView => %@", NSStringFromCGRect([imageView frame]));
NSLog(@"self.view => %@", NSStringFromCGRect(self.view.frame));
NSLog(@"Screen Bounds => %@", NSStringFromCGRect([[UIScreen mainScreen] bounds]));
NSLog(@"App window => %@", NSStringFromCGRect([[[[UIApplication sharedApplication] delegate] window] frame]));
[LaunchViewController.m: line 26] ImageView => {{0, 0}, {320, 548}}
[LaunchViewController.m: line 27] self.view => {{0, 0}, {320, 548}}
[LaunchViewController.m: line 28] Screen Bounds => {{0, 0}, {320, 568}}
[LaunchViewController.m: line 29] App window => {{0, 0}, {320, 568}}
The results show that the image view should in fact be covering self.view
with no padding at all between itself and the status bar.
The UIViewController is the root view controller of a UINavigationController, and I have set the navigation bar to be hidden. I thought that maybe this could be causing the issue however, after removing the UINavigationController and replacing it with just the UIViewController, the padding was still there.
Has anybody got any advice for removing the padding / has experience this issue before and has a fix?
Here is an image showing what's going on - the green area is the UIView (self.view
), and the orange area is the UIImageView.
[self.navigationController setNavigationBarHidden:YES];
[self.view setBackgroundColor:[UIColor greenColor]];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.frame];
[imageView setImage:[UIImage imageNamed:@"Orange-568h@2x.png"]];
[self.view addSubview:imageView];
on the
viewDidLoad
method your UIViewController's xib is loaded and your updated values regarding your User Interface is not detected.This causes no trouble if your UIView is exactly same (no UINavigationBar, UITabbar, status bar or device -iPhone 3.5 inch / 4 inch change). But if you are changing anything in the process, you might get false values on
viewDidLoad
.Easiest way to check this is to debug your screen and view bounds on the viewDidAppear, after UI gets updated.
Please check your xib/storyboard. There is a change between your current UI and designed interface.
To solve this you might use a function
updateUI
on theviewDidAppear
and update related view's again.this will fix it.