状态栏下移视图

Posted

技术标签:

【中文标题】状态栏下移视图【英文标题】:Status bar shifts views down 【发布时间】:2015-03-12 08:00:18 【问题描述】:

我有一个视图控制器,其中导航栏设置为隐藏并且 将我自己的 UIView 显示为导航栏并使其透明。 我还将我的视图框架 Y 位置设置为 0。所以它从顶部开始,不显示任何空间。

[self.navigationController.navigationBar setHidden:YES];

navBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

navBarView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top-bg.png"]];

[self.view addSubview:navBarView];

当我加载这个视图控制器时,上面的代码可以工作,但是如果我推送到任何其他视图控制器并返回到这个视图控制器,那么状态栏会占用空间并将视图向下推。

如何解决它。我已经尝试了所有我知道的解决方案。

【问题讨论】:

状态还是导航?你能在图片之前和之后添加并显示核心运行的位置(哪种方法)? @Wain:我已经更新了,希望现在清楚 为什么状态栏颜色变了? @PrafulKadam 你是怎么解决这个问题的,我也面临同样的问题,你能帮忙 @Geet : self.automaticallyAdjustsScrollViewInsets = NO;在视图中加载 【参考方案1】:

我猜布局约束可能有问题。请尝试以下代码:

UIView* navBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];

navBarView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"top-bg.png"]];

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(navBarView);
NSArray* horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-[navBarView]-|"
                                        options:0 metrics:nil views:viewsDictionary];
NSArray* verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[navBarView(64)]-|"
                                                                         options:0 metrics:nil views:viewsDictionary];
NSArray* constraints = [horizontalConstraints arrayByAddingObjectsFromArray:verticalConstraints];
[navBarView addConstraints:constraints];

[self.view addSubview:navBarView];

【讨论】:

我注意到,如果我使用 xib 子视图,那么只会发生这种情况。 您能否用您用于创建视图而不是导航栏的实际代码更新您的问题,并将其添加到超级视图和您的 xib 屏幕截图中?【参考方案2】:

您可以尝试将您的代码添加到 viewWillAppear 并检查它是否有效吗?

【讨论】:

以上是关于状态栏下移视图的主要内容,如果未能解决你的问题,请参考以下文章

状态栏高度变化处理

刷新控件和搜索栏导致表格视图/滚动视图出现奇怪的偏移,如何解决?

用自己的视图替换状态栏

从没有状态栏的全屏视图到有状态栏的正常视图的错误翻转转换

在状态栏上方显示视图?

关闭模态视图后的状态栏和导航栏问题