0

我有一个单视图应用程序(从 iOS 模板创建,没什么特别的)

有1个按钮:

- (IBAction)buttonWasTapped:(id)sender {
    // Toggle status bar hidden property
    BOOL hidden = [[UIApplication sharedApplication] isStatusBarHidden];
    [[UIApplication sharedApplication] setStatusBarHidden:!hidden withAnimation:UIStatusBarAnimationFade];
}

我首先加载应用程序。

在此处输入图像描述

然后按下按钮。

在此处输入图像描述

这可以。 我可以在顶部的黑色空间周围工作。接下来再次点击按钮并旋转到横向。然后再次点击按钮。它应该看起来像这样。

在此处输入图像描述

最后旋转回纵向并点击按钮。

在此处输入图像描述

总而言之,问题是:

  1. 隐藏状态栏
  2. 交换方向(纵向或横向)
  3. 显示状态栏
  4. 现在状态栏覆盖了 UI

我做了一个非常老套的解决方法,但我不喜欢它,我相信如果 Apple 解决它,它会坏掉。

  • 有没有人见过这个?
  • 有更好的解决方案吗?
4

2 回答 2

2

我遇到了类似的问题,我的修复是打开将旋转到方向我会重新显示栏,并将它隐藏在确实旋转到方向(或使用延迟时使用 performselector 再次隐藏它)发生在你身上的是,当设备旋转时,视图占用所有可用空间,它还将填充用于包含状态栏的空间

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // A workaround to stop the rotation filling up the status bar space
    // Show the status bar and then hide it straight after, (there is no flicker)
    if ([[UIApplication sharedApplication] isStatusBarHidden]) 
    {
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

        double delayInSeconds = 0.0;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
            [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
        });
    }

    if (!_controlsHidden) [self resetFadeoutTimer];

    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
于 2012-06-06T12:43:05.767 回答
1

您是否使用 Xcode 的 Interface Builder(图形 xib 编辑器)通过搜索栏定义您的视图?如果是这样,在界面生成器中,选择视图并在右侧栏中,选择属性检查器(图标看起来像一个滑块)。在 Simulated Metrics 部分中,将 Status Bar 值设置为不为“None”,在本例中为 Gray 以模拟您的应用程序的外观。这将调整视图的大小以适应状态栏。

于 2012-06-06T13:57:39.643 回答