【问题标题】:Navigationbar is positioned below the hidden statusbar导航栏位于隐藏状态栏下方
【发布时间】:2013-04-30 13:54:57
【问题描述】:

来自 TableView,我正在创建一个 MKMapView。我想要更多的屏幕空间,所以我隐藏了状态栏并将导航栏设置为半透明。

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
self.navigationController.navigationBar.translucent = NO;

不幸的是,导航栏位于隐藏状态栏下方(见图)。

我已经发现这可能会有所帮助,因为可以在主事件循环中执行一种重新加载栏的操作:

[self performSelector:@selector(setNavigationController:YES) withObject:nil afterDelay:0.1];

但这到目前为止还行不通。有什么提示吗?

提前致谢。

【问题讨论】:

  • 您发布的代码实际上将状态栏设置为可见,导航栏设置为不透明?
  • Uppps,我更正了这段代码。谢谢彼得
  • 您知道您的代码中有错字吗? setNavigationConroller 而不是 setNavigationController。我假设这至少是你想要的。 (我无法确认或否认这是否会满足您的要求)
  • 感谢错误报告 - 我在上面的代码中修复了它(我之前在项目中已经修复了它)

标签: iphone ios uinavigationbar hidden uistatusbar


【解决方案1】:

好的,我知道该怎么做了:

[self performSelector:@selector(setNavigationController:NO) withObject:nil afterDelay:0.1];
[self performSelector:@selector(setNavigationController:YES) withObject:nil afterDelay:0.1];

这会关闭并再次打开导航栏,从而强制它在正确的位置重新绘制。

【讨论】:

  • setNavigationController: 可能是一个私有 API,您是否设法获得了 Apple 的批准?
  • 不,最后我把它拿出来了,因为需要更多的变通方法才能让它在我的应用程序中完美运行 - 这在给定的时间内是不可能的。
【解决方案2】:

我在 iOS 6 中使用它:

self.navigationController.navigationBarHidden = YES;
self.navigationController.navigationBarHidden = NO;

【讨论】:

    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多