2017-02-03 164 views
1

不知何故,無論我遇到的查詢或答案的數量如何,我都找不到一個人可以說使用Swift 3在iOS中設置狀態欄顏色。我已經看到了所有在您添加的建議:狀態欄顏色iOS

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return .lightContent 
} 

但事情是,我不希望有一個透明的狀態欄。我想要一個特定的十六進制顏色的狀態欄顏色。

+1

「我不希望有一個透明的狀態欄」 真倒黴。它是透明的(在最新版本的iOS中)。一旦你接受了現實,你就可以開始接受解決方法了。 – matt

回答

1

沒有API設置狀態欄內容的顏色;如果你需要一個,你應該提交一個增強請求here。如果你想改變狀態欄背景的顏色,在你的應用窗口的頂部放置一個帶有背景顏色的視圖。

+0

Upvote在狀態欄下方放置彩色視圖。可悲的是,這是我的做法。 – foxanna

0

這是關於狀態欄更改的Apple Guidelines/Instruction。只有黑暗&燈(而&黑色)被允許在狀態欄。

這裏是 - 如何更改狀態欄樣式:

如果你想設置狀態欄樣式,應用的水平,那麼設置UIViewControllerBasedStatusBarAppearance在你的`的.plist」文件NO

,如果你婉設置狀態欄樣式,在視圖控制器的水平,那麼請按照下列步驟操作:

  1. .plist文件中設置UIViewControllerBasedStatusBarAppearanceYES,如果你需要在只的UIViewController級別設置狀態欄樣式。
  2. 在viewDidLoad中添加功能 - setNeedsStatusBarAppearanceUpdate

  3. 覆蓋preferredStatusBarStyle在您的視圖控制器。

-

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.setNeedsStatusBarAppearanceUpdate() 
} 

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return .lightContent 
} 

集的.plist根據狀態欄樣式設置電平值。 enter image description here


您可以在應用程序啓動或您的視圖控制器的viewDidLoad中設置狀態欄的背景顏色。

extension UIApplication { 

    var statusBarView: UIView? { 
     return value(forKey: "statusBar") as? UIView 
    } 

} 

// Set upon application launch, if you've application based status bar 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     UIApplication.shared.statusBarView?.backgroundColor = UIColor.red 
     return true 
    } 
} 


or 
// Set it from your view controller if you've view controller based statusbar 
class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     UIApplication.shared.statusBarView?.backgroundColor = UIColor.red 
    } 

} 



下面是結果:

enter image description here