2017-09-04 4 views
0

Ich habe eine Seite mit Tabs, in den Registerkarten möchte ich nur Text, in Android wird der Text sowohl vertikal als auch horizontal zentriert, ohne weiße Leerzeichen, aber in der ios-Version ist ein weißer Platz am oberen Rand des Textes, weil es keine Icons gibt. Wie kann ich den Leerraum auf der Oberseite entfernen?IOS Tabs Titel ohne Symbole Leerstelle auf der Oberseite

Antwort

1

Sie können einen benutzerdefinierten Renderer für das verwenden:

[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); 
     } 
    } 
} 

Die TitlePositionAdjustment ist das, was Sie suchen. Sie können dies auch verwenden, um die Schriftgröße bei Bedarf mit der Methode SetTitleTextAttributes zu ändern.

+0

Funktioniert, aber ich kann nicht einen Zeilenumbruch geben, ich möchte Text und dann ein Datum unter dem Text, aber wenn ich eine System.Environment.NewLine vor dem Datum geben, verschwindet das Datum. Ich mache so in der PCL: Titel = Text + System.Environment.NewLine + Datum; – Phill

+0

Eine andere Sache, wenn ich die Seite mit neuen Daten aktualisiere, ändert sich die Textposition an die ursprüngliche Position (Position ohne das benutzerdefinierte Rendern). – Phill

+0

Apple gibt Ihnen keinen Zugriff auf das zugrunde liegende Label, um seine numberOfLines-Eigenschaft zu ändern, und da UITabBarItem nicht von UIView erbt, können Sie seine View-Hierarchie nicht durchsuchen, um danach zu suchen. Also Multiline ist nicht möglich. –

Verwandte Themen