UIStatusBar与方向更改不一致

时间:2012-06-06 12:38:00

标签: iphone ios

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

有1个按钮:

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

我首先加载应用。

enter image description here

然后按下按钮。

enter image description here

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

enter image description here

最后旋转回porttrait并点按按钮。

enter image description here

总之,问题是:

  1. 隐藏状态栏
  2. 交换食物(纵向或横向)
  3. 显示状态栏
  4. 状态现在栏包含用户界面
  5. 我做了一个真正的hacky workaround,但我不喜欢它,我相信如果Apple解决它会破坏它。

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

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,我的修复程序将会旋转到方向我会重新显示条形图, 并将其隐藏在旋转方向上(或使用带延迟的执行选择器再次隐藏) 发生了什么事情,当设备旋转时,视图占用所有可用空间,它也将填充用于包含状态栏的空间

- (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);
}

答案 1 :(得分:1)

您是否使用Xcode的Interface Builder(图形xib编辑器)通过搜索栏定义视图?如果是这样,请在界面构建器中选择视图,然后在右侧栏中选择属性检查器(图标看起来像滑块)。在“模拟指标”部分中,将“状态栏”值设置为“无”,在这种情况下为“灰色”以模拟应用程序的外观。这将调整视图的大小以适应状态栏。