J'ai récemment mis à jour mon Xcode vers 11.4. Lorsque je lance l'application sur l'appareil, j'ai remarqué que tous les titres de mes éléments de navigation étaient complètement noirs lorsqu'ils étaient définis à partir du storyboard.
Vous ne pouvez pas changer le code non plus, la ligne de code suivante ne fonctionne plus
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
Je le fais fonctionner uniquement en utilisant des trucs iOS 13 UINavigationBarAppearance
@available(iOS 13.0, *)
private func setupNavigationBar() {
let app = UINavigationBarAppearance()
app.titleTextAttributes = [.foregroundColor: UIColor.white]
app.backgroundColor = Constants.Color.barColor
self.navigationController?.navigationBar.compactAppearance = app
self.navigationController?.navigationBar.standardAppearance = app
self.navigationController?.navigationBar.scrollEdgeAppearance = app
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
}
Quelqu'un peut-il m'expliquer pourquoi ??? C'est un bug crucial, ou une nouvelle fonctionnalité cachée?
ios
swift
xcode
navigationbar
Tudor Popa
la source
la source
Réponses:
Apple l'a finalement corrigé dans la version 11.4.1
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes
la source
Cela m'a corrigé, en utilisant plutôt UINavigationBarAppearance, à partir de: Personnalisation de la barre de navigation de votre application
Remarque: J'ai sous- classé UINavigationController , et cela a été appelé à partir du remplacement de viewWillAppear .
... ou pour AppDelegate , à l' échelle de l' application:
... pour AppDelegate, à l'échelle de l'application, dans Objective-C:
la source
UINavigationBarAppearance()
et sans raison sur l'ancien Xcode, nous n'avons pas dû en dépendre, mais depuis Xcode 11.4, il doit utiliserUINavigationBarAppearance()
ou la couleur du titre sera toujours de couleur noire.appearance.largeTitleTextAttributes
pour les grands titres.Sur le storyboard, pour votre contrôleur de navigation, changez la "teinte de la barre" en sa valeur "par défaut", puis sur votre code, vous pouvez le changer comme vous le feriez normalement.
la source
Je ne sais pas si c'est un bug ou non.
Nous l'avons corrigé en réglant le "Style de la barre d'état" sur un contenu sombre ou clair dans le cadre du projet. Cela forcera la couleur du texte de la barre d'état d'une certaine manière plutôt que d'être déterminée en fonction des appareils en mode clair ou sombre.
En outre, vous devez définir la valeur "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur "NON" dans votre Info.plist. sans cette valeur, le "style de la barre d'état" sera remplacé.
Créez ensuite un contrôleur de navigation personnalisé et implémentez-le dans vos storyboards.
* Les couleurs sont définies pour que vous puissiez les voir fonctionner clairement.
J'ai trouvé qu'il était préférable de définir le code dans ViewDidLoad plutôt que ViewDidAppear parce que mes couleurs n'étaient pas définies lors du chargement initial, uniquement après la navigation et le rechargement.
J'ai également constaté que ce problème pouvait être lié à la "teinte de la barre" d'une barre de navigation. lorsque nous avons essayé de le résoudre pour la première fois, nous avons défini la "teinte de la barre" par défaut et cela a semblé résoudre l'erreur également. Cependant, cela nous a empêché d'obtenir la couleur d'arrière-plan NavBar comme nous le voulions. Donc, dans mes storyboards, je me suis assuré de définir cette valeur par défaut juste pour faire bonne mesure.
J'espère que cela aide
la source
pas besoin de workaround.it est un bogue dans Xcode Interface Builder. Mise à jour d'Apple pour Xcode 11.4.1
des notes de version du développeur Apple
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes
la source
Semblable à la réponse de Stu Carney le 25/03, j'ai ajouté quelques détails de mise en œuvre supplémentaires.
Créez une sous-classe de UINavigationController . Ajoutez les éléments suivants pour afficherWillAppear:
Ensuite , passer outre preferredStatusBarStyle :
Si vous souhaitez mettre à jour la barre de navigation et la barre d'état de manière dynamique, comme à partir d'une méthode UISwitch IBAction ou d'un sélecteur, ajoutez ce qui suit:
Veillez également à définir toutes vos barres de navigation et boutons de barre sur les couleurs par défaut dans IB. Xcode semble avoir un bogue où les couleurs IB remplacent les couleurs définies par programmation.
la source
Dans mon cas, après avoir mis à niveau Xcode de 11.3 à 11.4, ce bug s'est produit. Je dois donc changer mon code pour souffler afin de mettre une image en arrière-plan dans la barre de navigation.
la source