1

我看到人们在 iOS 7.1 中隐藏状态栏时遇到问题,但我遇到了相反的问题。隐藏后我无法取消隐藏。:)

这段代码在 iOS 7 和 7.1 上都可以正常工作。它将隐藏状态栏并显示图像选择器。

if (sourceType == UIImagePickerControllerSourceTypeCamera)
{
    imagePickerController.showsCameraControls = YES;
    if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    }
}

self.imagePickerController = imagePickerController;
[self presentViewController:imagePickerController animated:YES completion:nil];

但是,应该恢复状态栏的部分在 iOS 7.1 中不再起作用:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
[self dismissViewControllerAnimated:YES completion:NULL];

此代码将关闭图像选择器,但状态栏将保持隐藏状态。

任何想法如何解决这个问题?

4

1 回答 1

1

好吧,我想通了。问题不在于 setStatusBarHidden:NO 本身,而在于它与图像选择器的结合。

似乎在 iOS 7.1 中,图像选择器(相机之一)将自行隐藏状态栏(在 iOS 7.0 中并非如此)。所以,如果我也手动隐藏它,状态栏会被隐藏两次,这似乎破坏了一些东西。

总结:在显示相机图像选择器之前手动隐藏状态栏在 iOS 7.1 中是没有意义的,因为图像选择器本身会隐藏它。

在不使用图像选择器的情况下隐藏和显示状态栏就可以了。

于 2014-04-17T22:35:50.413 回答