1

我使用的是UINavigationController和顯示導航欄在我的應用程序,但我並不想顯示狀態欄給用戶。我的問題是,如果我隱藏狀態欄,那麼導航欄的大小不夠大,無法顯示完整的導航欄。需要可以設置狀態欄純色,或添加子視圖狀態欄

我想請執行下列操作之一:

  1. 讓狀態欄純色。這不會顯示任何狀態欄的內容,它將從字面上只是顏色。

  2. 添加一個子視圖狀態欄,這樣我可以覆蓋所有的它的「地位」的內容。這個子視圖只是一個純色的UIView。

這將允許我在頂部具有完整大小的「導航欄」,而不必實際顯示狀態欄內容。

編輯:

我一直在嘗試以下解決方法UIWindow沒有運氣。下面的代碼被稱爲在我的視圖控制器的viewWillAppear:方法之一:

UIWindow *statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)]; 
statusWindow.windowLevel = UIWindowLevelStatusBar + 1; 
statusWindow.hidden = NO; 
statusWindow.backgroundColor = [UIColor redColor]; 
[statusWindow makeKeyAndVisible]; 

我不能得到這個工作。我應該隱藏狀態欄,還是顯示它?我試着用上面的代碼隱藏和顯示它,我的紅色UIWindow從不顯示在屏幕上。

+0

如果您想要更改狀態(白色(淺色內容)或黑色(默認)),則更改狀態欄顏色將不起作用。讓我知道你是否想這樣做。 – 2015-02-06 08:01:52

回答

1

我終於明白了。此代碼不能很好地工作:

self.statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)]; 
self.statusWindow.windowLevel = UIWindowLevelStatusBar + 1; 
self.statusWindow.hidden = NO; 
self.statusWindow.backgroundColor = [UIColor redColor]; 
[self.statusWindow makeKeyAndVisible]; 

最關鍵的是,statusWindow不能僅僅是一個局部變量。它需要是一個實際的屬性,否則它會從內存中釋放。

同樣爲了它的價值,我甚至不需要撥打makeKeyAndVisible就可以讓它出現。

0

你唯一能做的就是改變它的顏色或隱藏它。您無法爲其添加子視圖或隱藏其內容。

+0

如何將其更改爲純色並且不顯示任何「狀態」內容? – user3344977 2015-02-06 08:13:40

+0

對不起,我應該已經更清楚了。你可以改變它的顏色。但內容將是可見的。沒有辦法隱藏其內容並顯示顏色。 – Tander 2015-02-06 08:14:46