相信很多人都遇到过这个Bug。在使用UIImageViewController调用系统相册时,完全没这个问题,但是调用系统相机时,问题就出现了:
//UIImageViewDelegate代理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
...//在代理中,跳转到一个新界面VC
[picker pushViewController:VC animated:YES];
}
在VC界面,我们可以看到,虽然是push,但是没有出现导航栏:
没办法,那我们手动加呗:
//在VC的ViewDidLoad中添加
[self.navigationController setNavigationBarHidden:NO animated:YES];
发现,高度44的导航栏有了,但是高度20的状态栏没有啊:
好吧,接着加:
//在VC的ViewDidLoad中添加
[self.navigationController setNavigationBarHidden:NO animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
发现,状态栏有了,可是怎么总感觉不对劲呢,仔细看才明白,现在的导航栏+状态栏的高度仍然只有44(图片和导航栏下边界黑线有20的距离)。
怎么会这样呢,后来发现,将VC中的那两句话换一下位就可以了(图片和导航栏下边界黑线20的高度不见了):
//在VC的ViewDidLoad中添加
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[self.navigationController setNavigationBarHidden:NO animated:YES];
原因可能是IOS7后,状态栏集成到了导航栏上,如果导航栏先显示,那么44的高度就定了,之后再显示状态栏,也只会在44的高度内显示。但是如果先显示状态栏,会给状态栏20的高度,在显示导航栏,又会给导航栏44的高度,这样就不会有问题了。。。Perfect