2012-01-30 93 views
0

的下方,我正在创建MKMapView。我想要更多的屏幕房地产,所以我隐藏状态栏和设置导航栏transluscent。导航栏位于来自TableView的隐藏状态栏

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

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

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

enter image description here

我已经找到了,这也许会有帮助,因为可以进行实物吧主事件循环的重新加载的:

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

但是,这并不工作至今。任何提示?

在此先感谢。

+0

代码,你居然贴出设置状态栏可见,导航栏不半透明? – 2012-01-30 05:34:47

+0

Uppps,我纠正了这段代码。谢谢彼得 – brainray 2012-01-30 05:43:05

+0

你知道你的代码有错字吗? 'setNavigationConroller'而不是'setNavigationController'。我假设这是你至少想要的。 (我无法证实或否认是否会做你想要什么,虽然) – 2012-02-12 01:50:23

回答

1

好吧,我发现了怎么办:

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

此切换导航栏,然后再打开,这迫使它在正确的位置重绘。

+0

'setNavigationController:'可能是一个私人API,您是否设法通过了Apple的批准? – pt2ph8 2012-06-08 16:28:17

+0

不,最后我把它拿出来了,因为在那里需要更多的解决方法才能在我的应用程序中完美地工作 - 这在给定的时间内是不可能的。 – brainray 2012-06-21 10:40:29

0

我在iOS 6中使用:

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

谢谢,更好! – brainray 2013-04-30 11:16:51