gpt4 book ai didi

iphone - UIStatusBar 与方向变化不一致

转载 作者:行者123 更新时间:2023-11-28 20:34:59 25 4
gpt4 key购买 nike

我有一个单 View 应用程序(从 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

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

enter image description here

总的来说,问题是:

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

我做了一个真的hacky workaround ,但我不喜欢它,我相信如果 Apple 解决它,它会坏掉。

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

最佳答案

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

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

关于iphone - UIStatusBar 与方向变化不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10914390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com