以前はプロジェクトでsetStatusBarStyle
を使用していましたが、正常に動作しますが、廃止されているため、preferredStatusBarStyle
を使用しますが、動作しませんでした。私が知っていること:
関数をオーバーライドします
この関数は呼び出されません
注:Navigation Controllerを使用しています。
Apple Guidelines/Instruction ステータスバーの変更についてです。
ステータスバーのスタイル、アプリケーションレベルを設定する場合は、.plist
ファイルでUIViewControllerBasedStatusBarAppearance
をNO
に設定します。そして、あなたのappdelegate
> didFinishLaunchingWithOptions
に以下を追加します(プログラム的にアプリのデリゲートからできます)。
目的C
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
ビューコントローラーレベルでステータスバーのスタイルを設定する場合は、次の手順を実行します。
.plist
ファイルでUIViewControllerBasedStatusBarAppearance
をYES
に設定します。ViewDidLoadで関数を追加-setNeedsStatusBarAppearanceUpdate
view ControllerのpreferredStatusBarStyleをオーバーライドします。
目的C
- (void)viewDidLoad
{
[super viewDidLoad];
[self setNeedsStatusBarAppearanceUpdate];
}
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Swift
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
ステータスバースタイルのセットアップレベルに従って.plistの値を設定します。
アプリケーションの起動時またはView Controllerの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
}
}
結果は次のとおりです。