尝试在已经显示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;
更新:这是我的预期:
我想创建一个显示在所有视图控制器,图像选择器,警报控制器,呈现的视图控制器等之上的红色区域......它在所有项目屏幕上显示。所以我决定使用新的窗口。
答案 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"];
这样您就不会丢失状态栏边距。