0

隐藏状态栏时,我遇到了 UIViewController 主视图的定位问题。我调用隐藏状态栏的调用,但视图不会向上转换以占用状态栏留下的空间,即使尝试以编程方式重新定位框架也是如此。

下面是视图的屏幕截图,以蓝色边框为边界。尽管我尽了最大的努力,但我似乎无法将其翻译成占据状态栏的空间。但是,我确实注意到,当旋转手机时,它确实完全占据了空间,尽管我不知道在最初进入视图时要调用什么来实现这一点。任何想法如何重新定位视图?

在此处输入图像描述

我隐藏状态栏并尝试使用以下代码重新定位视图:

[self setWantsFullScreenLayout:YES];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

CGRect translatedFrame = self.view.frame;
translatedFrame.origin.y -=20;
self.view.frame = translatedFrame;

[self.view.layer setBorderColor:[UIColor blueColor].CGColor];
[self.view.layer setBorderWidth:1.0f];
4

3 回答 3

1

您何时何地隐藏状态栏?根据我的经验,只有将代码放置在viewWillAppear:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
于 2012-05-25T22:35:07.253 回答
0

您需要添加此行以调整视图大小。

[self setWantsFullScreenLayout:YES];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

CGRect translatedFrame = self.view.frame;
translatedFrame.origin.y -=20;
translatedFrame.size.height += 20; // Add 20px
self.view.frame = translatedFrame;

[self.view.layer setBorderColor:[UIColor blueColor].CGColor];
[self.view.layer setBorderWidth:1.0f];
于 2012-05-25T21:18:52.040 回答
0

我将问题缩小到我正在使用的库(View Deck)。我认为每个人的建议都适用于正常情况,但鉴于 View Deck 创建了一个带有视图控制器的容器,我认为它因此无法正确渲染。

于 2012-05-25T23:25:37.113 回答