2016-09-30 2 views
1

Notre teinte est blanche. Notre application utilise CNContactViewController. Dans notre version de l'application dans le magasin construit avec Xcode 7 ciblant iOS 8 et 9, si vous étiez iOS 9, nous avons appelé CNContactViewController. Le bouton arrière est blanc mais possède une barre de navigation grise derrière. Dans notre développement de développement utilisant Xcode 8 ciblant iOS 9 et 10, il n'y a pas de barre grise, donc le bouton arrière est blanc sur le dessus du blanc et très difficile à voir l'ombre.Barre de navigation CNContactViewController différente entre les versions

Est-ce que quelqu'un d'autre a expérimenté des changements entre les versions de Xcode/versions de SDK que la zone de navigation de CNContactViewController a changé? Pourrait-il y avoir un autre changement dans notre application qui aurait affecté cette barre?

Editer: Voici une image à quoi il ressemble dans notre dernière version. J'ai supprimé certaines informations personnelles, ce qui fait que les cases sont au milieu, mais vous pouvez voir en haut à gauche qu'il est très difficile de voir le bouton de retour.

enter image description here

Edit: voici comment nous avons mis les couleurs tout au long de l'application. Le bouton dos blanc ne serait pas un problème si elle a également utilisé la couleur de teinte barre de rouge au lieu de rien

UINavigationBar.appearance().barTintColor = UIColor.red 
    UINavigationBar.appearance().tintColor = UIColor.white 
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white] 

Le code que nous utilisons pour pousser ce sur notre contrôleur de navigation existant qui présente une barre rouge et boutons blancs:

let ucvc = CNContactViewController(forUnknownContact: contact) 
ucvc.delegate = self 
ucvc.allowsEditing = true 
ucvc.allowsActions = true 
ucvc.alternateName = name() 
ucvc.contactStore = CNContactStore() 
self.navigationController?.pushViewController(ucvc, animated: true) 
+0

Pouvez-vous fournir une capture d'écran? – Sealos

Répondre

0

Votre question a résolu mon problème: Je sais maintenant pourquoi j'ai le même problème.

Je l'ai résolu en réglant navigationController.navigationBar.tintColor à une nuance de bleu juste avant de pousser le CNContactViewController. À la sortie (dans la méthode délégué), rétablissez-le au blanc.

+0

J'ai essayé mais ça n'a pas l'air de faire la différence pour moi. Utilisez-vous également UINavigationBar.appearance()? Pourriez-vous fournir un exemple de code? Je sais que cela devrait être évident, mais je ne pourrais pas le faire fonctionner pour nous. –

3

J'avais exactement le même problème. Il semble définitivement comme un bug iOS 10. Quoi qu'il en soit, j'ai trouvé une solution en définissant la translucidité de la barre de navigation sur false. Définissez ensuite la couleur d'arrière-plan de la fenêtre principale de l'application sur la couleur de la barre de navigation.

Quelques extraits de code:

UINavigationBar.appearance().isTranslucent = false 
UIApplication.shared.delegate?.window??.backgroundColor = UIColor.red 
+0

ce backgroundColor bizarre de fenêtre fonctionne, mais certainement pas propre :) Espérons que Apple corrige ce bug d'apparence UINavigationBar! – zarghol

1

Je l'ai résolu comme ceci:

CNContactViewController *vc = [CNContactViewController viewControllerForContact:contact]; 
vc.delegate = self; 

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    for (UIView *view in [vc.navigationController.navigationBar subviews]) { 
     view.tintColor = [UIColor darkTextColor]; 

     view.backgroundColor = [UIColor redColor]; 
    } 
}); 

[self.navigationController pushViewController:vc animated:YES];