18 votes

Couleur des boutons de la barre de navigation UIDocumentPickerViewController

Mon application utilise une barre de navigation rouge (2) avec des boutons et des textes blancs. Lorsque j'utilise le sélecteur de contact du système (3), la barre d'état est rouge. Lorsque j'utilise le sélecteur de documents (1) UIDocumentPickerViewController puis la barre de navigation est blanche. Comment puis-je changer la couleur de la barre de navigation ou du texte ?

Lorsque j'utilise le code ci-dessous, cela fonctionne mais cela modifie également ma barre de navigation.

UINavigationBar.appearance().tintColor = .red

Merci pour votre aide

code :

func open() {
        UINavigationBar.appearance().barTintColor = .green
        let documentsController = UIDocumentPickerViewController(documentTypes: makeDocumentTypesList(), in: .import)
        documentsController.delegate = self
        viewControllerProvider.getViewController().present(documentsController, animated: true, completion: nil)
    }

navigation bar

41voto

Antoine Lamy Points 415

Vous pouvez simplement réinitialiser l'apparence de UIDocumentPickerViewController uniquement en plaçant ce code quelque part dans votre application:didFinishLaunchingWithOptions: et les boutons de la barre reviendront à leur couleur bleue d'origine. Vous pouvez également choisir une autre couleur. La couleur de la barre, en revanche, n'est pas personnalisable.

if #available(iOS 11.0, *) {
    UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
}

4voto

EderYif Points 602

Utilice setTitleTextAttributes

UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.white], for: .normal)

voir ma réponse ici

1voto

Michael Heinzl Points 11

C'est la seule solution que j'ai trouvée :

    UINavigationBar.appearance().tintColor = ... some color
    _viewController?.present(documentPicker, animated: true)

À ma connaissance, il n'est pas possible de définir le paramètre couleur de la barre seulement le couleur de la teinte (couleur du texte). Pour conserver la couleur de teinte pour le reste du projet, je la réinitialise dans viewWillAppear du contrôleur de vue sous-jacent.

-2voto

Ahmad Labeeb Points 432

Comme vous le demandez "changer la couleur de la barre de navigation ou du texte". Je n'ai pas de solution pour changer la couleur de la barre de navigation, elle renvoie toujours nil.

self.present(documentPicker, animated: true,completion: {

                if documentPicker.navigationController?.navigationBar != nil{
                    documentPicker.navigationController?.navigationBar.barTintColor = .red
                }
            })

mais si vous acceptez de ne modifier que le texte

cela fonctionne pour moi

self.present(documentPicker, animated: true,completion: {

                documentPicker.view.tintColor = .red
            })

Je comprends qu'il ne s'agit pas de la solution optimale, mais aucune des solutions que j'ai essayées ne fonctionne pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X