web-dev-qa-db-ja.com

XCode 6-b3(Swift)のステータスバーのカラーテキスト

ステータスバーの色のテキストを変更しようとしましたが、 this thread からの回答が機能しません。特にXCode 6には何かありますか?

私は挿入しようとしました:

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

UIViewController

また

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

AppDelegate.Swiftに変更し、info.plistで変更しようとしましたが、影響はありません。ステータスバーの色を白に変更するにはどうすればよいですか。

18
Maxim Tsybanov

Info.plistで、任意の値にビューコントローラーベースのステータスバーの外観を定義する必要があります。

enter image description here

定義する場合[〜#〜] yes [〜#〜]次に、各View ControllerでpreferredStatusBarStyle関数をオーバーライドする必要があります。

定義する場合[〜#〜] no [〜#〜]を使用してAppDelegateにスタイルを設定できます

UIApplication.sharedApplication().statusBarStyle = .LightContent

51
Keenle

Plistに"ビューコントローラベースのステータスバーの外観== NO"を設定し、appdelegateクラスのdidfinshLaunchingメソッドに1行挿入します。

 UIApplication.sharedApplication().statusBarStyle = .LightContent
3

Swift 3.

View controller-based status bar appearance == NOから*.plistの下のコードをdidFinishLaunchingWithOptionsの前のreturnメソッドのappdelegateクラスに配置します。

let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) {
    statusBar.backgroundColor = UIColor.red
}
UIApplication.shared.statusBarStyle = .lightContent

必要に応じて、backgroundColorおよびstatusBarStyleを変更できます。

2
Himanshu padia

必ずinfo.plistファイルのView controller-based status bar appearanceYesに設定してください。

さらに、UINavigationControllerにいる場合は、ViewControllersでスタイルを単純に設定することはできません。 UINavigationControllerをサブクラス化し、これを追加します。

override func preferredStatusBarStyle() -> UIStatusBarStyle {

    if let vc = self.viewControllers?.last as? UIViewController {
        return vc.preferredStatusBarStyle()
    }

    return super.preferredStatusBarStyle()
}

これで、UIViewControllerサブクラスでバーのスタイルを設定でき、UINavigationControllerがそれをリッスンします:)。

1
Kevin R

Keenleはまさにその通りです。iOS7以降では、アプリ全体に設定する前に、viewControllerベースのステータスバースタイルをオプトアウトする必要があります。

doc: https://developer.Apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//Apple_ref/occ/instm/UIApplication/setStatusBarStyle:animated

「ビューコントローラベースのステータスバーの外観動作をオプトアウトするには、値がNOのUIViewControllerBasedStatusBarAppearanceキーをアプリのInfo.plistファイルに追加する必要がありますが、これはお勧めしません。」

0
Sameer J