OS提供的视图控制器的透明状态栏

时间:2014-10-13 15:30:34

标签: ios uiviewcontroller uiimagepickercontroller statusbar

我的应用允许用户导入视频并执行一些其他操作,例如发送电子邮件。当我调用标准代码来呈现这些视图控制器时(下面的示例),结果是可滚动元素出现在状态栏下面,这是可怕的。我自己的View Controllers不会受到这个故障的影响。问题似乎发生在iOS 7和8中。

我看到很多相关的问题,但是大多数问题都涉及处理你自己的视图控制器中的状态栏,我已经做过了。我的问题是处理我从操作系统获得的视图控制器。

知道我们可能会做什么(例如在故事板中)导致这种情况吗?我忘了或错过了一个明显的步骤吗?这非常丑陋和分散注意力,修复将是非常棒的。我在其他任何应用中都没有看到这一点。

UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
mediaUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

// Displays saved movies from the Camera Roll album.
mediaUI.mediaTypes = @[(__bridge NSString *)kUTTypeMovie];

mediaUI.allowsEditing = YES;

mediaUI.delegate = self; //with or without this, the glitch appears

[self presentViewController:mediaUI animated:YES completion:nil];

这就是它的样子:

enter image description here

1 个答案:

答案 0 :(得分:0)

我能找到的唯一解决方案是删除状态栏。这可能是通过davidisdk对this question的回答来实现的,但我是通过继承UIImagePicker(以及其他一些类)来实现的:

@interface NoStatusBarImagePickerController : UIImagePickerController
@end

@implementation NoStatusBarImagePickerController
- (BOOL)prefersStatusBarHidden {
    return YES;
}
- (UIViewController *)childViewControllerForStatusBarHidden {
    return nil;
}
@end