ステータスバーの色のテキストを変更しようとしましたが、 this thread からの回答が機能しません。特にXCode 6には何かありますか?
私は挿入しようとしました:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
UIViewController
また
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
AppDelegate.Swift
に変更し、info.plist
で変更しようとしましたが、影響はありません。ステータスバーの色を白に変更するにはどうすればよいですか。
Info.plistで、任意の値にビューコントローラーベースのステータスバーの外観を定義する必要があります。
定義する場合[〜#〜] yes [〜#〜]次に、各View ControllerでpreferredStatusBarStyle
関数をオーバーライドする必要があります。
定義する場合[〜#〜] no [〜#〜]を使用してAppDelegate
にスタイルを設定できます
UIApplication.sharedApplication().statusBarStyle = .LightContent
Plistに"ビューコントローラベースのステータスバーの外観== NO"を設定し、appdelegateクラスのdidfinshLaunchingメソッドに1行挿入します。
UIApplication.sharedApplication().statusBarStyle = .LightContent
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
を変更できます。
必ずinfo.plistファイルのView controller-based status bar appearance
をYes
に設定してください。
さらに、UINavigationControllerにいる場合は、ViewControllersでスタイルを単純に設定することはできません。 UINavigationControllerをサブクラス化し、これを追加します。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
if let vc = self.viewControllers?.last as? UIViewController {
return vc.preferredStatusBarStyle()
}
return super.preferredStatusBarStyle()
}
これで、UIViewControllerサブクラスでバーのスタイルを設定でき、UINavigationControllerがそれをリッスンします:)。
Keenleはまさにその通りです。iOS7以降では、アプリ全体に設定する前に、viewControllerベースのステータスバースタイルをオプトアウトする必要があります。
「ビューコントローラベースのステータスバーの外観動作をオプトアウトするには、値がNOのUIViewControllerBasedStatusBarAppearanceキーをアプリのInfo.plistファイルに追加する必要がありますが、これはお勧めしません。」