2017-09-04 7 views
0

J'ai une page avec des onglets, dans les onglets je veux seulement du texte, dans android le texte est centré à la fois verticalement et horizontalement, sans espaces blancs, mais dans la version ios là est un espace blanc en haut du texte, car il n'y a pas d'icônes. Comment puis-je supprimer l'espace blanc sur le dessus?IOS Tabs Titre sans icônes espace blanc sur le dessus

Répondre

1

Vous pouvez utiliser un moteur de rendu personnalisé pour que:

[assembly: ExportRenderer(typeof(TabbedPage), typeof(CustomTabBarRenderer))] 
namespace MyProject.iOS.Renderers 
{ 
    public class CustomTabBarRenderer : TabbedRenderer 
    { 
     public override void ViewWillAppear(bool animated) 
     { 
      if (TabBar?.Items == null) 
       return; 

      // Go through our elements and change them 
      var tabs = Element as TabbedPage; 
      if (tabs != null) 
      { 
       for (int i = 0; i < TabBar.Items.Length; i++) 
        UpdateTabBarItem(TabBar.Items[i]); 
      } 

      base.ViewWillAppear(animated); 
     } 

     private void UpdateTabBarItem(UITabBarItem item) 
     { 
      if (item == null) 
       return; 

      // Set the font for the title. 
      item.SetTitleTextAttributes(new UITextAttributes() { Font = UIFont.FromName("Your-Font", 10) }, UIControlState.Normal); 
      item.SetTitleTextAttributes(new UITextAttributes() { Font = UIFont.FromName("Your-Font", 10) }, UIControlState.Selected); 

      // Moves the titles up just a bit. 
      item.TitlePositionAdjustment = new UIOffset(0, -2); 
     } 
    } 
} 

Le TitlePositionAdjustment est ce que vous cherchez. Vous pouvez également utiliser ceci pour changer la taille de la police si nécessaire en utilisant la méthode SetTitleTextAttributes.

+0

Fonctionne, mais je ne peux pas donner un saut de ligne, je veux du texte et puis une date en dessous du texte, mais si je donne un System.Environment.NewLine avant la date, la date disparaît. Je fais comme ça dans le PCL: Title = Text + System.Environment.NewLine + date; – Phill

+0

Une autre chose, si je mets à jour la page avec de nouvelles données, la position du texte change à la position d'origine (position sans le rendu personnalisé). – Phill

+0

Apple ne vous donne pas accès à l'étiquette sous-jacente pour modifier sa propriété numberOfLines et, comme UITabBarItem n'hérite pas de UIView, vous ne pouvez pas parcourir sa hiérarchie de vues pour la rechercher. Donc, multiline n'est pas possible. –