碰到的问题:
背景: A、B控制器的视图设置StatusBarStyle为default
A控制器进入一个UIImagePickerController后返回,然后切换到平行的控制器B,结果发现B的视图最上面与UIStatusBar重叠。
解决过程:
1、首先得想到的解决办法就是 判断IOS7及以上设置
self.extendedLayoutIncludesOpaqueBars =NO;
self.edgesForExtendedLayout=UIRectEdgeNone;
等等这些值,发现还是没有办法解决问题。猜想应该不是这些造成的。
2、继续猜想是不是进入UIImagePickerController 后改变了UIStatusBar的stlye,这么想的理由是出问题之前UIStatusBar是不透明的,后来变成透明了。后来在stack overFlow 点击打开链接上看到一篇问题,最终是证实了我的猜想。
设置UIImagePickerViewController的delegate,然后实现代理方法
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated {
if ([navigationController isKindOfClass:[UIImagePickerController class]] &&
((UIImagePickerController *)navigationController).sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:NO];
}
}
至于UIStatusBarStyle的样式根据你的代码实际情况设置。搞定。