iOS 7 UIImagePickerController导航栏重叠问题

4

我在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];

请看我的截图

在此输入图片描述


请查看此链接:https://dev59.com/aHfZa4cB1Zd3GeqPQVU_,它可能会给您一些想法。 - Sport
仍然无法工作,谢谢。 - Jun
3个回答

7
这对我有用:

UIImagePickerController将translucent = NO设置为导航栏

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;
    }
}

我发现我不需要第一部分,只需要那个委托方法。谢谢! - Chris C

1
上面答案的 Swift 版本:
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
        if navigationController.isKindOfClass(UIImagePickerController.self) {
            viewController.navigationController!.navigationBar.translucent = false
            viewController.edgesForExtendedLayout = .None
        }
    }

这在我的iPad上导致了崩溃? - user4790024

0

正如用户2192708所提到的,我认为主要问题在于更改选择器navigationBar的默认半透明属性,我不确定您是否需要更改其他任何内容:

picker.navigationBar.translucent = NO

如果您在应用程序的某个位置设置了 UINavigationBar 的外观,那么这将导致导航栏使用它;否则将使用“默认”外观。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接