2017-09-21 5 views
0

J'ai une application iOS développée avec Xamarin. Maintenant, j'essaie de le migrer vers iOS 11. Mon problème est qu'aucun des BarButtonItems dans les barres de navigation n'est visible dans un contrôleur, mais ils sont fonctionnels et je peux les toucher.BarButtonItems non visible dans iOS 11

Certains de ces éléments de bouton sont définis dans le storyboard, en ajoutant l'élément de navigation dans le contrôleur. Les titres de ces boutons sont également invisibles. même le bouton de retour standard.

Les autres éléments du bouton sont définis dans le code par SetRightBarButtonItem ou SetLeftBarButtonItem. J'ai à la fois des boutons d'icônes personnalisés et des boutons d'éléments de système. un exemple pour le bouton d'élément du système est:

this.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem(UIBarButtonSystemItem.Stop, (sender, e) => { ... }), true);

et une autre avec le bouton icône personnalisée:

this.NavigationItem.SetRightBarButtonItem(new UIBarButtonItem(UIImage.FromBundle("gear"), UIBarButtonItemStyle.Plain, (sender, e) => { ... }), true);

Ces éléments de bouton barre de navigation ont travaillé sans problème depuis longtemps. comment puis-je les corriger avec la nouvelle structure de la barre de navigation dans iOS 11? (Je n'accepte pas les gros titres dans les barres de navigation)

+0

Cela fonctionnera-t-il lorsque vous les ajouterez dans la dernière version de VS avec Xamarin.iOS 11.0.0.0? –

+0

Dans iOS 11, les barres de navigation sont désormais rendues avec AutoLayout par défaut. Essayez de définir des contraintes de disposition de hauteur et de largeur sur la vue d'image personnalisée et son conteneur. –

Répondre

0

Faites juste quelque chose comme ça.

var button = new UIBarButtonItem(UIImage.FromBundle("gear"),UIBarButtonItemStyle.Plain, (sender, e) => { ... }); 

button.SetTitleTextAttributes(new UITextAttributes() 
      { 
       TextColor = UIColor.Blue, 
       TextShadowColor = UIColor.Clear 
      }, UIControlState.Normal); 

this.NavigationItem.SetRightBarButtonItem(button, true);