2010-02-02 89 views
6

我想顯示一個模式視圖,並希望它覆蓋iPhone的狀態欄。顯示模態視圖時,iPhone狀態欄會消失嗎?

我試着將模式視圖控制器的wantsFullScreenLayout屬性設置爲YES;我也將其父母的財產設置爲YES。這不起作用,可能是因爲模式視圖顯示在主窗口內容的下面,其中包括狀態欄。

我的第二種方法放棄了整個「wantsFullScreenLayout」技術,以便在顯示模態視圖之前隱藏狀態欄,然後在模態視圖關閉後再將其打開。直到最後......模態視圖的父視圖佈局不正確(其導航欄部分隱藏在狀態欄後面)。調用 - [視圖setNeedsLayout]不執行任何操作。

我該如何解決這個問題?

謝謝。

回答

2

您將需要在UIApplication- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated

事情是這樣的:

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 

這應該隱藏有一個很好的動畫漸變的狀態欄。

+0

我已經試過了(見上面的第二種方法)。我沒有問題讓狀態欄隱藏並重新出現;問題是一旦我使它重新出現,視圖佈局正確。謝謝。 – 2010-02-03 00:37:07

+0

只需調整視圖的大小?將它的框架設置爲(0,20,320,460)? – Jasarien 2010-02-03 09:51:38

+0

工作正常!仍然不完全確定爲什麼我必須手動設置...但謝謝! – 2010-02-05 01:09:39

12

遲到了,但我想我可以拯救別人一些麻煩。

我有一個VC幾個推入NavController(讓我們稱之爲VC父母)。現在我想要顯示隱藏導航欄AND狀態欄的模態屏幕(CHILD)。經過多次實驗,我知道這是有效的...

1)因爲我通過在PARENT中調用presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated來呈現CHILD VC,導航欄不再涉及(不需要隱藏它)。

2)CHILD VC nib中的視圖大小爲320x480。

3)CHILD VC設置self.wantsFullScreenLayout = YES;viewDidLoad

4)剛剛呈現CHILD之前,隱藏與[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES];

5狀態欄)在父使用委託協議方法駁回CHILD VC,並在dismissModalViewControllerAnimated:YES]之前致電[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES];以確保導航欄繪製在正確的位置

希望這有助於您。

+0

+1)。我解決了它,但沒有執行其他步驟,並在-viewWillDisappear中再次顯示狀態欄:在模式視圖中。 – 2011-10-05 18:51:44

+0

爲我出色地工作! – Chris 2012-07-02 03:57:11

+2

關於第4步,方法簽名是' - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation'。你發送了第二個參數BOOL而不是UIStatusBarAnimation。 – 2012-10-11 10:02:16