web-dev-qa-db-ja.com

iOS13でステータスバーの背景色を変更する

IOS13では、「キーの値」を使用してステータスバーにアクセスできなくなったため、ステータスバーの背景色を変更できなくなりました。誰かがこれがどのように可能であるかを理解しましたか、それともiOS13の最終バージョンで可能になるという知識はありますか?

UIApplications StatusBarView(xcode 11、ベータ7ではアクセスできなくなりました)の使用やstatusbarmanagerの使用など、さまざまな提案に出会いました。どちらもステータスバーにアクセスできません。

let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
if statusBar.responds(to: #selector(setter: UIView.backgroundColor)) {
  statusBar.backgroundColor = <Some Color>
}

ステータスバーに必要な背景色が表示されることを期待しています。

6
Nij

ステータスバーはアプリの色と一致しようとします

ナビゲーションバーがある場合

self.navigationBar.barTintColor = UIColor.blue

or

UINavigationBar.appearance().barTintColor = UIColor.blue

ナビゲーションバーがない場合

view.backgroundColor = UIColor.blue

背景がウェブビューの場合

webView.scrollView.backgroundColor = UIColor.blue

私が見逃しているケースはおそらくもっとあるでしょう

1
Dug

私はすべてのUI色を設定する中央のThemeManagerクラスを使用していました。これは私がそれを解決した方法です。あなたはあなたのニーズに合ったソリューションの部分を取ることができます:

  let sharedApplication = UIApplication.shared
  sharedApplication.delegate?.window??.tintColor = setYourColor

  if #available(iOS 13.0, *) {
        let statusBar = UIView(frame: (sharedApplication.delegate?.window??.windowScene?.statusBarManager?.statusBarFrame)!)
        statusBar.backgroundColor = setYourColor
        sharedApplication.delegate?.window??.addSubview(statusBar)
    } else {
        // Fallback on earlier versions
        sharedApplication.statusBarView?.backgroundColor = setYourColor
  }



extension UIApplication {

var statusBarView: UIView? {
    return value(forKey: "statusBar") as? UIView
   }
}
0
Mile Dev
 let appearance = UINavigationBarAppearance()
 appearance.backgroundColor = .blue
 self.navigationController?.navigationBar.scrollEdgeAppearance = appearance

これがお役に立てば幸いです。

0
Ajumal

これをベースビューコントローラーで呼び出します

public extension UIViewController {
    func setStatusBar(color: UIColor) {
        let tag = 12321
        if let taggedView = self.view.viewWithTag(tag){
            taggedView.removeFromSuperview()
        }
        let overView = UIView()
        overView.frame = UIApplication.shared.statusBarFrame
        overView.backgroundColor = color
        overView.tag = tag
        self.view.addSubview(overView)
    }
}
0
midhun p

これを試して

if #available(iOS 13.0, *) {
    let navBarAppearance = UINavigationBarAppearance()
    navBarAppearance.configureWithOpaqueBackground()
    navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white]
    navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
    navBarAppearance.backgroundColor = <insert your color here>
    navigationBar.standardAppearance = navBarAppearance
    navigationBar.scrollEdgeAppearance = navBarAppearance
}
0
gihanshox