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外观,如果您将其设置在您的应用程序的某个地方,或者如果不是,那么“默认”。