2013-09-21 107 views
4

UIApplication.SharedApplication.SetStatusBarHidden在隱藏狀態欄(MonoTouch的代碼,同時也適用於對象 - C)確實爲iOS 6的工作,但針對iOS 7,我們必須:的iOS 7 - 子視圖控制器

  1. 調用SetNeedsStatusBarAppearanceUpdate()上視圖控制器(例如:顯示全屏圖像的視圖控制器)
  2. 在同一視圖控制器上重寫PrefersStatusBarHidden()

但是,上面提到的視圖控制器嵌入在導航欄中,該導航欄也嵌入在滑出菜單中。即使使用AddChildViewController()將所有嵌入式視圖控制器添加到層次結構中,嘗試更新子視圖控制器中的狀態欄也不起作用。

任何想法?


編輯

Window.RootViewController (Menu) 
|___ ViewControllerA (Navigation Bar) 
    |___ ViewControllerB (Actual View controller) 

ViewControllerB想隱藏/顯示狀態欄

+0

看起來像'ChildViewControllerForStatusBarHidden()'覆蓋是要走的路。 –

回答

1

它不完全是你試圖做什麼出現。如果您想簡單地隱藏所有子視圖控制器中的狀態欄,則可以設置新的plist屬性UIViewControllerBasedStatusBarAppearance

...如果你不希望執行此行爲,通過使用UIApplication的statusBarStyle方法設置狀態欄 風格,添加 UIViewControllerBasedStatusBarAppearance關鍵應用程序的Info.plist 文件,並給它的價值沒有。

來源:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html#//apple_ref/doc/uid/TP40013174-CH8-SW1

來源是BTW一個很好的參考各種信息相關的UINavigationBar和iOS7 UIStatusBar處理。

+0

鏈接被破壞! – Karsten

7

ViewControllerA應該重寫childViewControllerForStatusBarHidden並返回ViewControllerB。

- (UIViewController *)childViewControllerForStatusBarHidden { 
    return _viewControllerB; 
} 
+0

這是正確的答案。 – Karmeye

相關問題