2017-09-26 3 views
0

enter image description here Utilisation du rendu Navigation J'ai essayé de changer la couleur de fond de la barre d'outils en réglant les éléments suivants. Mais la couleur de ma barre d'outils secondaire ne change pas. Est-ce que quelqu'un peut me faire savoir comment changer la couleur de fond de la barre d'outils secondaire dans xamarin iOS?Comment changer la couleur de fond de la barre d'outils secondaire - xamarin ios

+0

Est-ce que vous êtes à la recherche de? https://developer.xamarin.com/recipes/ios/content_controls/navigation_controller/change_the_nav_bar_color/ – cvanbeek

+0

Je parle de la barre d'outils secondaire ... Celle que vous activez avec l'attribut Order: user3903423

+0

Qu'est-ce que' Toolbar', voulez-vous dire la barre d'outils dans le moteur de rendu personnalisé 'NavigationRenderer', et pourriez-vous joindre l'image pour décrire votre problème, pense qu'il sera plus intuitif –

Répondre

0

Je l'ai fait de la façon suivante:

[assembly: ExportRenderer(typeof(NavigationPage), typeof(ExtendedNavigationRenderer))] 
namespace Sample.iOS 
{ 
    public class ExtendedNavigationRenderer : NavigationRenderer 
    { 
     UIToolbar _secondaryToolbar; 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 

      //_secondaryToolbar = View.Subviews.OfType<UIToolbar>().FirstOrDefault(v => v.GetType() != typeof(UIToolbar)); 
      _secondaryToolbar = View.Subviews.OfType<UIToolbar>().FirstOrDefault(); 
      if (_secondaryToolbar != null) 
       _secondaryToolbar.BarTintColor = this.NavigationBar.BarTintColor; 
     } 

     public override void ViewDidLayoutSubviews() 
     { 
      base.ViewDidLayoutSubviews(); 

      if (_secondaryToolbar != null && _secondaryToolbar.Items != null) 
      { 
       foreach (UIBarButtonItem item in _secondaryToolbar.Items) 
       { 
        var label = item.CustomView.Subviews.OfType<UILabel>().FirstOrDefault(); 
        if (label != null) 
        { 
         label.TextColor = UINavigationBar.Appearance.TitleTextAttributes.ForegroundColor; 
         //label.Font = label.Font.WithSize(12f); 
        } 
       } 
      } 
     } 

(approche tintColor apporte la couleur réelle qui est légèrement différent de NavigationBar primaire, mais NavigationBar.BackgroundColor est nulle)