web-dev-qa-db-ja.com

iOSでSwiftインターネット到達可能性を使用してステータスバーの色を変更するには?

インターネットが接続されている場合、ステータスバーの色が黒に変わり、インターネットが接続されていない場合、色またはステータスバーが赤になり、インターネットが機能しているかどうかを示すために、デバイスのステータスバーの色を変更したいSwiftを使用してアプリケーションを操作する...

12
Fatti Khan

あなたのInfo.plist「コントローラーベースのステータスバーの外観を表示」をブール値に設定する必要があります。

YESに設定した場合、各View ControllerでpreferredStatusBarStyle関数をオーバーライドする必要があります。

NOに設定すると、次を使用してAppDelegateのスタイルを設定できます。

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
36
override func viewWillAppear(animated: Bool) {
    self.navigationController?.navigationBarHidden =  true

    //Status bar style and visibility
    UIApplication.sharedApplication().statusBarHidden = false
    UIApplication.sharedApplication().statusBarStyle = .LightContent

    //Change status bar color
    let statusBar: UIView = UIApplication.sharedApplication().valueForKey("statusBar") as! UIView
    if statusBar.respondsToSelector("setBackgroundColor:") {
        statusBar.backgroundColor = UIColor.redColor()
    }

}
28
A.G

テスト済みSwift&iOS9

Navigation Controllersを使用する場合、これをviewcontrollerクラスに追加します。

_override func viewDidLoad(){
    ...
    self.navigationController?.navigationBar.barStyle = .Black
}
_

それ以外の場合は、UIViewControllerのpreferredStatusBarStyle()をオーバーライドします。

_override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent
}
_

より多くの情報を見つけることができます こちら

5
Cody

Swift 2.の場合

これらの方法で試してください

// Get network status
class func hasConnectivity() -> Bool {
    let reachability: Reachability = Reachability.reachabilityForInternetConnection()
    let networkStatus: Int = reachability.currentReachabilityStatus().value
    return networkStatus != 0
}

// change status bar color
var navigationBarAppearace = UINavigationBar.appearance()
navigationBarAppearace.tintColor = UIColor.blueColor()
navigationBarAppearace.barTintColor = UIColor.blueColor()

tintColor属性は、ナビゲーションバーの背景色を変更します

barTintColor属性は、

しかし、runtimeでステータスバーの色を変更したい場合、より良い方法はステータスバーの後ろにビューを追加することだと思います

3
Kevin Machado

Swiftの場合

これはXcode 8およびSwift 3

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}
2
Taichi Kato

// didFinishLaunchingWithOptionsのAppDelegate.Swift内:UINavigationBar.appearance()。barTintColor = UIColor.greenColor()

//Optionally, if you need a specific color, how you do it with RGB:
UINavigationBar.appearance().barTintColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)

                                or 

Info.plistで、「View Controller-based status bar Appearance」をブール値に設定する必要があります。

 UIApplication.sharedApplication().statusBarStyle = .LightContent
2

IOS 7の時点で@rckoenesがコメントしたように、ステータスバーはアプリ上に描画されます。そのため、ステータスバー領域の背後にビューを配置し(上から20ピクセル-ステータスバーの高さ)、インターネット接続のステータスの変更に応じて背景色を制御できます。ステータスバーの色を変更する他のオプションはありません。

2
Yuvrajsinh

黒いステータスバーに白いテキストを表示するには:コントローラーベースのステータスバーの外観を表示[〜#〜] no [〜#〜] in Info。 plist AppDelegate.SwiftでdidFinishLaunchingWithOptionsにlet statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView statusBar.backgroundColor = UIColor.blackを追加します

0
Anup G Prasad