Je remarque un problème dans la barre de navigation de mon UIDocumentPicker sous iOS 11 uniquement, les boutons Terminé, Annuler ou Modifier sont invisibles, et lorsque l'utilisateur le touche, il apparaît, c'est-à-dire que la couleur à l'état normal est blanche, même lors du changement de {{X0} }, La couleur n'a changé qu'au toucher.

enter image description here enter image description here

5
Ahmed Adnan Qazzaz 26 nov. 2017 à 15:21

3 réponses

Meilleure réponse

Utiliser CustomDocumentPickerViewController avec du noir appearance pour UINavigationBar et UIBarButtonItem

import UIKit

class CustomDocumentPickerViewController: UIDocumentPickerViewController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        UINavigationBar.appearance().tintColor = UIColor.black
        UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.black], for: .normal)
    }

    override func viewWillDisappear(_ animated: Bool) {

        UINavigationBar.appearance().tintColor = UIColor.white // your color
        UIBarButtonItem.appearance().setTitleTextAttributes(nil, for: .normal)
        super.viewWillDisappear(animated)

    }

}
1
Sajidh Zahir 2 juil. 2018 à 18:50

Pour une raison inconnue, j'ai compris que si vous créez une sous-classe de UIDocumentPicker à l'aide de Objective-C et définissez la fonction [UINavigationBar appearance].tintColor = [UIColor black]; dans viewWillAppear func, et réinitialisez-la à vos valeurs par défaut dans le viewWillDisappear, Ça marche bien.

Mais si vous effectuez les mêmes étapes en utilisant swift, ce ne sera pas le cas.

3
Ahmed Adnan Qazzaz 18 déc. 2017 à 07:23

Je ne suis pas un grand fan de la définition de l'apparence globale entre viewWillAppear et viewWillDisappear. L'API d'apparence doit être utilisée uniquement au démarrage de l'application. Vous pouvez simplement réinitialiser l'apparence de UIDocumentPickerViewController uniquement sans sous-classer en mettant ce code dans application:didFinishLaunchingWithOptions: et les boutons de la barre retourneront leur bleu d'origine:

if #available(iOS 11.0, *) {
    UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
}
3
Antoine Lamy 19 avril 2018 à 16:40
47496117