2013-03-18 152 views
1

我有一個視圖控制器,顯示全屏幕,從視圖控制器可以呈現另一個模態VC,模態VC需要狀態欄,但解除模態VC控制器後,基本VC有狀態欄頂部的空間甚至我設置:iOS:解除需要狀態欄的模態VC後如何隱藏狀態欄?

[[UIApplication sharedApplication] setStatusBarHidden:YES] 

狀態欄隱藏,但空間仍然存在,而且我查了基礎VC的視圖的框架,它從0開始,我不認爲我應該使其y座標從-20開始,但我還能做什麼?

感謝

回答

3

嘗試了這一點:

[[UIApplication sharedApplication] setStatusBarHidden:NO]; 
self.view.frame = [[UIScreen mainScreen] applicationFrame]; 

從上applicationFrame文檔:

此屬性包含屏幕邊界減去 佔據了狀態欄的區域,如果它是可見的。使用此屬性是 推薦的方式來檢索您的應用程序的初始窗口大小。 矩形用點表示。

要獲得更強大的解決方案,請更改您的框架以響應狀態欄框架更改。您的應用程序委託子類可以實現:

-application:willChangeStatusBarFrame: 
-application:didChangeStatusBarFrame: 

或者,您可以爲這些通知使用NSNotificationCenter註冊:

  • UIApplicationWillChangeStatusBarFrameNotification
  • UIApplicationDidChangeStatusBarFrameNotification
+0

謝謝我會嘗試一下。 – hzxu 2013-03-18 02:44:50

0

我試過你的方法,但它不適合我,我用這種方式解決了這個問題,當模態VC撤銷時,在基地VC的我需要:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; 
self.wantsFullScreenLayout = YES; 
[self.view layoutSubviews]; 

我知道這是不是一個很好的解決方案,但它是我目前想到的唯一的事情,無論如何感謝您的幫助。