【问题标题】:Adding new window when presenting UIImagePicker呈现 UIImagePicker 时添加新窗口
【发布时间】:2016-12-17 16:57:44
【问题描述】:

当已经呈现 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;

更新:这是我的预期:

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

【问题讨论】:

  • 为什么要添加新窗口,而不仅仅是新视图?
  • @David'mArm'Ansermot bcos 我想在整个应用屏幕上显示新的状态栏
  • 您可以简单地启用/禁用视图上的状态栏;)
  • @David'mArm'Ansermot 这是不可能的。这意味着您必须检查每个视图控制器对吗?我想在新的状态栏上显示其他内容
  • 我不明白你想要完成什么。您想在状态栏顶部添加一个窗口并将其隐藏,然后在该窗口的层次结构中显示您自己的状态栏吗?

标签: ios iphone


【解决方案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"];

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

【讨论】:

  • 我想在新状态栏上自定义内容。这就是为什么我需要添加新的状态栏
  • 请看一下编辑。您将能够使用空白空间。
  • 不幸的是,我在屏幕底部有一个标签栏,这意味着我有很多导航栏。所以这不是一个真正的解决方案。但是谢谢@atulkhatri。我还需要一个解释,怎么会这样。
  • 请查看更新后的答案。您可以为每个 UINavigationController 重复使用相同的导航栏
  • 谢谢你。您的解决方案完美无缺,但这不是我的期望。对不起,我没有告诉你我的期望。我的失败
猜你喜欢
  • 2021-11-02
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
相关资源
最近更新 更多