隐藏状态栏时 UIView 不会调整大小

Posted

技术标签:

【中文标题】隐藏状态栏时 UIView 不会调整大小【英文标题】:UIView doesn't resize when hiding the statusBar 【发布时间】:2010-10-13 12:25:53 【问题描述】:

一切都在标题中,这里有一些我尝试过的东西:

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
[self setWantsFullScreenLayout:YES];
[[self view] setNeedsLayout];
CGRect frame = self.view.frame;
frame.size.height += 20.0;
[[self view] setFrame:frame];

你能告诉我该怎么做吗?我认为这可能是代码中的其他内容,因为有了一个简单清晰的项目,它就可以工作了。

【问题讨论】:

我在这里找到了答案:***.com/questions/1110052/… UIView doesn't resize to full screen when hiding the nav bar & tab bar的可能重复 【参考方案1】:

您可能需要更改框架的位置以及高度。

frame.origin.y -= 20.0;
frame.size.height +=20.0;

【讨论】:

没有。我打印了框架以确保:0.000000 -20.000000 320.000000 387.000000。我的视图位于导航控制器中,如果有帮助,它位于 tabbarcontroller 中 您可能需要调整根控制器的框架,使 tabbarcontroller 听起来像,然后您需要调整导航控制器框架的大小。它们都需要为 0,0,320,480 才能全屏显示。这假设标签栏和导航栏是我认为它们各自的控制器主视图的子视图。 我确实更改了 tabBarController.view.frame,但它不起作用。此外,我确实更改了背景,但没有一个显示为绿色。我的状态栏留下的空间是白色的…… 这可能是你的 UIWindow 你看到的白色,因为它是默认的窗口背景颜色。你确定tabbarcontroller主视图的位置是0,0【参考方案2】:

您是否为 UIView 的以下属性赋值?

@property(nonatomic) BOOL autoresizesSubviews @property(nonatomic) UIViewAutoresizing autoresizingMask

我之前使用过 Ben 的方法来解决状态栏的问题,但我认为它应该有另一种优雅的方法。

【讨论】:

我使用 Interface Builder,所以我手动设置了调整大小的蒙版。适用于隐藏状态和导航栏时被推到顶部的其他 UI 元素

以上是关于隐藏状态栏时 UIView 不会调整大小的主要内容,如果未能解决你的问题,请参考以下文章

在iOS 7中隐藏状态栏时防止UINavigationController调整原点

隐藏导航栏时的假状态栏颜色

在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?

iOS7隐藏状态栏但不调整顶部布局指南

隐藏导航栏时隐藏状态栏 - SWIFT iOS8

动态隐藏状态栏时如何保留状态栏占用的空间?