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>
}
ステータスバーに必要な背景色が表示されることを期待しています。
ナビゲーションバーがある場合
self.navigationBar.barTintColor = UIColor.blue
or
UINavigationBar.appearance().barTintColor = UIColor.blue
ナビゲーションバーがない場合
view.backgroundColor = UIColor.blue
背景がウェブビューの場合
webView.scrollView.backgroundColor = UIColor.blue
私が見逃しているケースはおそらくもっとあるでしょう
私はすべての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
}
}
let appearance = UINavigationBarAppearance()
appearance.backgroundColor = .blue
self.navigationController?.navigationBar.scrollEdgeAppearance = appearance
これがお役に立てば幸いです。
これをベースビューコントローラーで呼び出します
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)
}
}
これを試して
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
}