在呈现UIImagePicker

时间:2016-12-13 08:37:06

标签: ios iphone

尝试在已经显示UIImagePicker时手动添加新窗口时出现问题(图像低于)。目的是,用新的状态栏替换当前状态栏。然后我可以控制在其上显示哪些内容。

添加后,UIImagePicker已被解除,显示的屏幕显示时没有状态栏,也没有新的状态栏。

这是我的代码,只是简单的几行代码

_newWindow              = [[UIWindow alloc] initWithFrame:[UIApplication sharedApplication].statusBarFrame];
UIView *_newView        = [[[NSBundle mainBundle] loadNibNamed:@"NewStatusView" owner:self options:nil] firstObject];
_newView.frame          = [UIApplication sharedApplication].statusBarFrame;
[_newWindow addSubview:_newView];

_newWindow.rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
_newWindow.windowLevel        = UIWindowLevelAlert + 1; 
_newWindow.hidden             = NO;

更新:这是我的预期:

enter image description here

我想创建一个显示在所有视图控制器,图像选择器,警报控制器,呈现的视图控制器等之上的红色区域......它在所有项目屏幕上显示。所以我决定使用新的窗口。

1 个答案:

答案 0 :(得分:1)

您可以使用此方法显示/隐藏状态栏:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

无需在其下方添加视图。

更新:

您可以继承UINavigationBar以保持64px的大小,如下所示:

#import "TANavigationBar.h"

@implementation TANavigationBar

- (CGSize)sizeThatFits:(CGSize)size {
    CGFloat width = [UIScreen mainScreen].bounds.size.width;
    CGSize newSize = CGSizeMake(width, 64);
    return newSize;
}

@end

稍后您可以在初始化导航控制器时使用此导航栏,如下所示:

UINavigationController* nvc= [[UINavigationController alloc] initWithRootViewController:viewController];
[nvc setValue:[[TANavigationBar alloc]init] forKeyPath:@"navigationBar"];

这样您就不会丢失状态栏边距。