【问题标题】:UIImagePickerController presentViewController - Status bar issue in ios7UIImagePickerController presentViewController - ios7 中的状态栏问题
【发布时间】:2013-10-11 13:32:13
【问题描述】:

我在 iOS 7 中遇到状态栏问题。

下面是展示这个图像选择器的代码

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

        picker.sourceType =UIImagePickerControllerSourceTypePhotoLibrary;

        if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]){
            [self presentViewController:picker animated:YES completion:^{

                if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
                    [[UIApplication sharedApplication] setStatusBarHidden:YES
                                                            withAnimation:UIStatusBarAnimationNone];
            }];
        }
        else {
            [self presentModalViewController:picker animated:YES];
        }
    }

当我尝试选择图像时,屏幕如下所示

谁能帮我解决这个问题?

【问题讨论】:

  • 你在用assetlibrary吗?
  • 不,我没用那个
  • @Dev,刚刚为您添加了完整的解决方案。请检查我的答案的编辑部分。

标签: iphone ios7 uiimagepickercontroller statusbar


【解决方案1】:

试试这个

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}

编辑:

这里有一个更简单的解决方案。

在您的 plist 中添加基于布尔视图控制器的状态栏外观并将其值设置为 NO。然后在您的应用委托application didFinishLaunchingWithOptions 中声明以下内容:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleDefault];

当您启动相机时,它应该处理状态栏。然后对于相机胶卷部分,只需在视图控制器中添加以下方法,您已放置 UIImagePickerController 的代码

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}

当您选择相机胶卷时,它应该处理模态视图状态栏。

希望这对人有所帮助。

【讨论】:

  • setStatusBarHidden:YES 不会隐藏状态栏,如果您在图像选择器外部单击以将其删除。
  • 在你的信息列表中添加这个基于布尔视图控制器的状态栏外观并将其设置为否。然后插入 [application setStatusBarHidden:NO]; [应用程序 setStatusBarStyle:UIStatusBarStyleDefault];在您的应用程序委托应用程序中确实完成了午餐方法。这将在相机被触发时隐藏状态栏。
  • 我的场景是这样的,在我的 iPad 应用程序中。 1. 我在弹出框控制器中有 UIImagePicker。 2. 我在 plist 中将基于视图控制器的状态栏外观的布尔值设置为 NO。 3.也在 didFinishLoading '[application setStatusBarHidden:NO]' 4.到目前为止一切都很好,任何视图控制器中都没有状态栏。 5. 但是当我在弹出框控制器中显示图像选择器时,会出现状态栏。 5.1。如果我选择任何图像,状态栏......它就会消失。这是可以忍受的。 5.2 但是如果我在弹出框外点击,弹出框会消失,但状态栏不会消失。所以问题是在第 5.2 点任何建议。
  • 在其中包含弹出模式代码的视图控制器中应用视图控制器代码 sn-p。那么当您选择一张图片并返回该视图时,状态栏将不存在。如果您仍然有问题,请使用您的代码构建一个模拟项目并将其上传到某处,以便我为您查看。
猜你喜欢
  • 2013-10-26
  • 2013-09-27
  • 1970-01-01
  • 2015-02-05
  • 2013-09-29
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
  • 2013-11-09
相关资源
最近更新 更多