答えて
を下回っている
NO
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) { statusBar.backgroundColor = UIColor.blue } UIApplication.shared.statusBarStyle = .lightContent return true }
に
View controller-based status bar appearance
を設定しません、それは既製のパブリックAPIとはできません。
しかし、iOS 7
のリリースでは、ステータスバーの外観を変更することができます。したがって私はここで私の回避策を投稿しています。
preferredStatusBarStyle
をオーバーライドすることにより、個々のビューコントローラから:
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
を別の方法として、あなたはUIApplication statusBarStyle
メソッドを使用して、ステータスバーのスタイルを設定することができます。これを行うには、「コントローラベースのステータスバー表示の表示」という名前の新しいキーを挿入し、値をNOに設定します。
"コントローラベースのステータスバーの表示"を無効にすると、次のコードを使用してステータスバーのスタイルを設定できます。終わり
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
、あなたはアプリケーションの起動中に、またはあなたのビューコントローラののviewDidLoad中にステータスバーの背景色を設定することができます
[[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]];
以下
ようUINavigationBar
財産色合いの色を変更します。ここで
は、ステータスバーの変更についてApple Guidelines/Instructionである:ここで
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
}
}
は結果です。ステータスバーに暗い&ライト(&黒)が許可されています。ここで
がある - ステータスバーのスタイルを変更する方法:あなたは、ステータスバーのスタイルを設定したい場合は
、アプリケーションレベルでは、あなたの `の.plist」ファイルにNO
にUIViewControllerBasedStatusBarAppearance
を設定します。
あなたは、ビューコントローラレベルで、ステータスバーのスタイルを設定するワンならば、次の手順を実行します。あなただけのUIViewControllerレベルでのステータスバーのスタイルを設定する必要がある場合は、.plist
ファイルにYES
からUIViewControllerBasedStatusBarAppearance
を設定
- を。あなたのビューコントローラに
setNeedsStatusBarAppearanceUpdate
オーバーライドpreferredStatusBarStyle - のviewDidLoadで
は、機能を追加します。
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
の.plistの設定値、ステータスバーのスタイルの設定レベルに応じました。
ここでは私の回避策です:1.Create
人工ステータスバーの背景としてビューコントローラのルートビューに追加し、UIView
を作成UIView
// status bar's height is 20.0pt
CGRect frame = CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, 20.0);
UIView *fakeStatusBarBG = [[UIView alloc] initWithFrame:frame];
fakeStatusBarBG.backgroundColor = [UIColor yourColor];
2.Addそれにあなたのビューコントローラのルートビュー
// self is your view controller, make sure fakeStatusBarBG is the top subview in your view hierarchy
[self.view insertSubview:fakeStatusBarBG aboveSubview:yourTopSubview];
あなたが行ってください。
3.(追加)ステータスバーのコンテンツの色を白または黒のみに変更します。
この回避策ではプライベートAPIを使用しないため、安全です。 :-)
2つの回答(コメント付き)に基づいて、(私が思ったように)答えは** no **です。 (1)ステータスバーのフォントの色を変更したり、(2)プライベートAPIを使用することはできますが、Appleがアプリケーションを拒否する(または悪化する)可能性があります。 – dfd