Comme vous pouvez le constater, cela n’est arrivé que sous iOS 12.
iOS 12 iOS 11
voici mon code:
import UIKit
import WebKit
class ViewController: UIViewController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
override var prefersStatusBarHidden: Bool {
return false
}
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView = WKWebView(frame: UIScreen.main.bounds)
view.addSubview(webView)
webView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
webView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
webView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
webView.loadHTMLString("<p><iframe src=\"https://www.youtube.com/embed/HCjNJDNzw8Y\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"\"></iframe></p>", baseURL: URL(string: "https://www.youtube.com/"))
setNeedsStatusBarAppearanceUpdate()
}
}
mon info.plist est juste en dessous:
Est-ce que quelqu'un sait comment le résoudre?
Je sais que si je règle la clé View controller-based status bar appearance
sur YES
aidera, mais dans ce cas cela ressemblera à ceci:
Il y a une raison inconnue de changer la barre d'état en blanc et noir, et comme mon projet réel est à grande échelle, il sera donc agréable de le résoudre dans son contexte d'origine, plutôt que de faire en sorte que chaque ViewController hérite d'une classe qui est la sous-classe UIViewController ou ajoutez dynamic
pour remplacer prefersStatusBarHidden
et preferredStatusBarStyle
en extension (essayez simplement de forcer l'affichage de la barre d'état de la mise à jour lorsque View controller-based status bar appearance
est défini sur YES
)
J'espère qu'il existe une solution pour View controller-based status bar appearance
définie sur NO
, ce sera très utile thx.
ici est le projet de démonstration, il a été créé par Xcode9.4, n'hésitez pas à l'essayer.
Supprimer la propriété suivante du fichier info.plist
. et donnez-le uniquement par programme.
La barre d'état est initialement masquée: NON
Afficher l'apparence de la barre d'état basée sur le contrôleur: NON
Style de la barre d'état: UIStatusBarStyleLightContent
C'est peut-être un travail pour vous.
En fin de compte, j'ai utilisé category dans objective-c pour résoudre ce problème . J'ai mis View controller-based status bar appearance
à YES et ajouté du code ci-dessous
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
- (BOOL)prefersStatusBarHidden
{
return NO;
}
En ce qui concerne mon expérience, vous devez également implémenter le code ci-dessus dans UINavigationViewController . Il semble qu'il ait sa propre implémentation pour cela . , puis ajoutez-en un.
Bien que cette solution soit un peu lourde, mais c’est celle à laquelle j’ai résolu mon problème à la perfection.
Abonnez-vous à
UIWindowDidBecomeHiddenNotification
un événement
NSNotificationCenter.DefaultCenter.AddObserver(new NSString("UIWindowDidBecomeHiddenNotification"), HandleAction);
et définir l'état de la barre d'état dans le gestionnaire:
void HandleAction(NSNotification obj)
{
UIApplication.SharedApplication.StatusBarHidden = false;
}