Hinzufügen von iOS-spezifischer Formatierung

Eine Möglichkeit zum Festlegen von iOS-spezifischen Formatierungen besteht darin, einen benutzerdefinierten Renderer für ein Steuerelement zu erstellen und plattformspezifische Stile und Farben für jede Plattform festzulegen.

Weitere Optionen zum Steuern der Darstellung Ihrer Xamarin.Forms iOS-App sind:

Diese Alternativen werden weiter unten erläutert.

Anpassen von Info.plist

Mit der Datei Info.plist können Sie einige Aspekte des Renderers einer iOS-Anwendung konfigurieren, z. B. wie (und ob) die Statusleiste angezeigt wird.

Verwenden Sie beispielsweise den folgenden Code, um die Farbe und Textfarbe der Navigationsleiste auf allen Plattformen festzulegen:

var nav = new NavigationPage (new TodoListPage ());
nav.BarBackgroundColor = Color.FromHex("91CA47");
nav.BarTextColor = Color.White;

Das Ergebnis wird im folgenden Bildschirmausschnitt angezeigt. Beachten Sie, dass die Statusleistenelemente schwarz sind (dies kann nicht festgelegt Xamarin.Forms werden, da es sich um ein plattformspezifisches Feature handelt).

Screenshot: iOS-Design mit Statusleistenelementen in schwarzem Text.

Idealerweise wäre die Statusleiste auch weiß - etwas, das wir direkt im iOS-Projekt erreichen können. Fügen Sie der Info.plist die folgenden Einträge hinzu, um zu erzwingen, dass die Statusleiste weiß ist:

iOS Info.plist-Einträge

oder bearbeiten Sie die entsprechende Info.plist-Datei direkt, um Folgendes einzuschließen:

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

Wenn die App ausgeführt wird, ist die Navigationsleiste grün, und der Text ist weiß (aufgrund der Xamarin.Forms Formatierung), und der Statusleistentext ist dank iOS-spezifischer Konfiguration auch weiß:

Screenshot: iOS-Design mit Statusleistenelementen in weißem Text.

UIAppearance-API

Die UIAppearance API kann verwendet werden, um visuelle Eigenschaften für viele iOS-Steuerelemente festzulegen, ohne einen benutzerdefinierten Renderer erstellen zu müssen.

Das Hinzufügen einer einzelnen Codezeile zur AppDelegate.cs-Methode FinishedLaunching kann alle Steuerelemente eines bestimmten Typs mithilfe ihrer Appearance Eigenschaft formatieren. Der folgende Code enthält zwei Beispiele : global formatieren die Registerkartenleiste und das Schaltersteuerelement:

AppDelegate.cs im iOS-Projekt

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
  // tab bar
    UITabBar.Appearance.SelectedImageTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47); // green
  // switch
    UISwitch.Appearance.OnTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47); // green
    // required Xamarin.Forms code
    Forms.Init ();
    LoadApplication (new App ());
    return base.FinishedLaunching (app, options);
}

UITabBar

Standardmäßig wird das ausgewählte Registerkartenleistensymbol in einem TabbedPage wäre blau:

Standardmäßiges iOS-Registerkartenleistensymbol in TabbedPage

Um dieses Verhalten zu ändern, legen Sie die UITabBar.Appearance Eigenschaft fest:

UITabBar.Appearance.SelectedImageTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47); // green

Dies bewirkt, dass die ausgewählte Registerkarte grün ist:

Grünes iOS-Registerkartenleistensymbol in TabbedPage

Mit dieser API können Sie das Erscheinungsbild des Xamarin.FormsTabbedPage iOS mit sehr wenig Code anpassen. Weitere Informationen zur Verwendung eines benutzerdefinierten Renderers zum Festlegen einer bestimmten Schriftart für die Registerkarte finden Sie im Rezept zum Anpassen von Registerkarten.

UISwitch

Das Steuerelement ist ein weiteres Switch Beispiel, das einfach formatiert werden kann:

UISwitch.Appearance.OnTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47); // green

Diese beiden Bildschirmaufnahmen zeigen das Standardsteuerelement UISwitch auf der linken Seite und die angepasste Version (Einstellung Appearance) auf der rechten Seite an:

Standard-UISwitch-Farbe Angepasste UISwitch-Farbe

Weitere Steuerelemente

Viele iOS-Benutzeroberflächensteuerelemente können ihre Standardfarben und andere Attribute mithilfe der UIAppearance API festlegen.