iOS 7的UIImagePickerController导航栏重叠

我遇到了一个问题,在iOS7中访问照片库(iOS6是好的)。 它似乎导航栏重叠的相册视图,我试图设置picker.edgesForExtendedLayout = UIRectEdgeNone; 但它不起作用。

 UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { picker.edgesForExtendedLayout = UIRectEdgeNone; } [self presentViewController:picker animated:YES completion:nil]; 

看看我的截图

在这里输入图像说明

这适用于我:

UIImagePickerController设置半透明=否导航栏

 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.navigationController.navigationBar.translucent = NO; 

之后,在你的UIImagePickerController委托中实现这个代码:

 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { if ([navigationController isKindOfClass:[UIImagePickerController class]]) { viewController.navigationController.navigationBar.translucent = NO; viewController.edgesForExtendedLayout = UIRectEdgeNone; } } 

以上答案的Swift版本:

 func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) { if navigationController.isKindOfClass(UIImagePickerController.self) { viewController.navigationController!.navigationBar.translucent = false viewController.edgesForExtendedLayout = .None } } 

正如user2192708提到的,我认为这里的主要问题是改变select器navigationBar的默认半透明属性,我不知道你需要改变什么:

 picker.navigationBar.translucent = NO 

这将导致导航栏使用UINavigationBar外观,如果您将其设置在您的应用程序的某个地方,或者如果不是,那么“默认”。