2016-06-10 21 views
0

我正在製作一個允許用戶更改主題的應用程序,例如。改變背景顏色。假設我有一個按鈕,當點擊時,切換背景顏色的變化。使用UIbutton更新狀態欄外觀(在lightContent和默認值之間切換)

例如,在代碼:

@IBAction func floodLightAction(sender: AnyObject) { 

    previousFloodlightOption = loadFloodlightOption() 

    if previousFloodlightOption { 

     print("OFF") 

     saveFloodlightOption(false) 

     // configure theme for themeViewController: 

     UIApplication.sharedApplication().statusBarStyle = .Default 

     setNeedsStatusBarAppearanceUpdate() 

     configureFloodlight(false) 


    } else { 

     print("ONN") 

     saveFloodlightOption(true) 

     // configure theme for themeViewController: 

     UIApplication.sharedApplication().statusBarStyle = .LightContent 

     setNeedsStatusBarAppearanceUpdate() 

     configureFloodlight(true) 

    } 

然而,setNeedsStatusBarAppearanceUpdate()似乎並沒有按下按鈕時更新狀態欄的風格。我有幾個自定義函數,下面會解釋。

我自定義的保存FUNC:

saveFloodlightOption(bool: Bool) 
  • 這節省NSUserDefaults的使用一個布爾值。

我的主題配置FUNC:

configureFloodLight(bool: Bool) 
  • 這只是改變對象的顏色的基礎上,主題視圖控制器採摘。

我希望我給了足夠的信息,謝謝!

回答

1

您是否在您的info.plist中將View Controller Based Status bar appearance設置爲false

View Controller Based status bar appearance

+0

謝謝!!!!!我不知道我必須這樣做。我還是新的。 –

+0

沒問題!感謝upvote並接受:) –

+0

嗨我實際上有一個問題。如何重寫preferredStatusBarStyle不起作用?例如:覆蓋FUNC preferredStatusBarStyle() - > UIStatusBarStyle { 如果previousFloodlightOption { 返回UIStatusBarStyle.Default }否則{ 返回UIStatusBarStyle.LightContent } } –

相關問題