Große Seitentitel unter iOS

Beispiel herunterladen Das Beispiel herunterladen

Dieser iOS-plattformspezifische Titel wird verwendet, um den Seitentitel als großer Titel auf der Navigationsleiste eines NavigationPageanzuzeigen, für Geräte, die iOS 11 oder höher verwenden. Ein großer Titel ist linksbündig ausgerichtet und verwendet eine größere Schriftart und wechselt zu einem Standardtitel, wenn der Benutzer mit dem Scrollen von Inhalten beginnt, sodass die Bildschirmimmobilie effizient verwendet wird. Im Querformat kehrt der Titel jedoch zur Mitte der Navigationsleiste zurück, um das Inhaltslayout zu optimieren. Es wird in XAML verwendet, indem die NavigationPage.PrefersLargeTitles angefügte Eigenschaft auf einen boolean Wert festgelegt wird:

<NavigationPage xmlns="http://xamarin.com/schemas/2014/forms"
                xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
                ...
                ios:NavigationPage.PrefersLargeTitles="true">
  ...
</NavigationPage>

Alternativ kann es über C# mit der Fluent-API genutzt werden:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...

var navigationPage = new Xamarin.Forms.NavigationPage(new iOSLargeTitlePageCS());
navigationPage.On<iOS>().SetPrefersLargeTitles(true);

Die NavigationPage.On<iOS> -Methode gibt an, dass diese plattformspezifische Nur unter iOS ausgeführt wird. Die NavigationPage.SetPrefersLargeTitle -Methode steuert im Xamarin.Forms.PlatformConfiguration.iOSSpecific Namespace, ob große Titel aktiviert sind.

Sofern große Titel auf dem NavigationPageaktiviert sind, werden auf allen Seiten im Navigationsstapel große Titel angezeigt. Dieses Verhalten kann auf Seiten überschrieben werden, indem die Page.LargeTitleDisplay angefügte Eigenschaft auf einen Wert der LargeTitleDisplayMode Enumeration festgelegt wird:

<ContentPage ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
             Title="Large Title"
             ios:Page.LargeTitleDisplay="Never">
  ...
</ContentPage>

Alternativ kann das Seitenverhalten mithilfe der Fluent-API von C# überschrieben werden:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...

public class iOSLargeTitlePageCS : ContentPage
{
    public iOSLargeTitlePageCS(ICommand restore)
    {
        On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Never);
        ...
    }
    ...
}

Die Page.On<iOS> -Methode gibt an, dass diese plattformspezifische Nur unter iOS ausgeführt wird. Die Page.SetLargeTitleDisplay -Methode im Xamarin.Forms.PlatformConfiguration.iOSSpecific Namespace steuert das Verhalten des großen Titels auf dem Page, wobei die LargeTitleDisplayMode Enumeration drei mögliche Werte bereitstellt:

  • Always – erzwingen, dass die Navigationsleiste und der Schriftgrad das Großformat verwenden.
  • Automatic – verwenden Sie den gleichen Stil (groß oder klein) wie das vorherige Element im Navigationsstapel.
  • Never – erzwingt die Verwendung der regulären, kleinformat-Navigationsleiste.

Darüber hinaus kann die SetLargeTitleDisplay -Methode verwendet werden, um die Enumerationswerte durch Aufrufen der LargeTitleDisplay -Methode umzuschalten, die den aktuellen LargeTitleDisplayModezurückgibt:

switch (On<iOS>().LargeTitleDisplay())
{
    case LargeTitleDisplayMode.Always:
        On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Automatic);
        break;
    case LargeTitleDisplayMode.Automatic:
        On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Never);
        break;
    case LargeTitleDisplayMode.Never:
        On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Always);
        break;
}

Das Ergebnis ist, dass ein angegebenes LargeTitleDisplayMode auf den Pageangewendet wird, der das Verhalten des großen Titels steuert:

Plattformspezifischer Weichzeichnereffekt