Textfarbmodus der NavigationPage-Leiste unter iOS

Diese plattformspezifische Steuerung steuert, ob die Textfarbe der Statusleiste an die NavigationPage Leuchtdichte der Navigationsleiste angepasst wird. Sie wird in XAML verwendet, indem sie die NavigationPage.StatusBarTextColorMode angefügte Eigenschaft auf einen Wert der StatusBarTextColorMode Aufzählung festlegt:

<FlyoutPage 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"
    x:Class="PlatformSpecifics.iOSStatusBarTextColorModePage">
    <FlyoutPage.Flyout>
        <ContentPage Title="Flyout Page Title" />
    </FlyoutPage.Flyout>
    <FlyoutPage.Detail>
        <NavigationPage BarBackgroundColor="Blue" BarTextColor="White"
                        ios:NavigationPage.StatusBarTextColorMode="MatchNavigationBarTextLuminosity">
            <x:Arguments>
                <ContentPage>
                    <Label Text="Slide the master page to see the status bar text color mode change." />
                </ContentPage>
            </x:Arguments>
        </NavigationPage>
    </FlyoutPage.Detail>
</FlyoutPage>

Alternativ kann sie mit der Fluent-API von C# genutzt werden:

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

IsPresentedChanged += (sender, e) =>
{
    var flyoutPage = sender as FlyoutPage;
    if (flyoutPage.IsPresented)
        ((Xamarin.Forms.NavigationPage)flyoutPage.Detail)
          .On<iOS>()
          .SetStatusBarTextColorMode(StatusBarTextColorMode.DoNotAdjust);
    else
        ((Xamarin.Forms.NavigationPage)flyoutPage.Detail)
          .On<iOS>()
          .SetStatusBarTextColorMode(StatusBarTextColorMode.MatchNavigationBarTextLuminosity);
};

Die Methode NavigationPage.On<iOS> gibt an, dass diese plattformspezifische Funktion nur unter iOS ausführbar ist. Die NavigationPage.SetStatusBarTextColorMode Methode steuert im Xamarin.Forms.PlatformConfiguration.iOSSpecific Namespace, ob die Textfarbe der Statusleiste an NavigationPage die Leuchtdichte der Navigationsleiste angepasst wird, wobei die StatusBarTextColorMode Enumeration zwei mögliche Werte bereitstellt:

  • DoNotAdjust – gibt an, dass die Textfarbe der Statusleiste nicht angepasst werden soll.
  • MatchNavigationBarTextLuminosity – gibt an, dass die Textfarbe der Statusleiste mit der Leuchtdichte der Navigationsleiste übereinstimmen soll.

Darüber hinaus kann die GetStatusBarTextColorMode-Methode verwendet werden, um den aktuellen Wert der StatusBarTextColorMode-Enumeration abzurufen, die auf NavigationPage angewendet wird.

Das Ergebnis ist, dass die Textfarbe der Statusleiste auf einer NavigationPage Leiste an die Leuchtdichte der Navigationsleiste angepasst werden kann. In diesem Beispiel ändert sich die Textfarbe der Statusleiste, wenn der Benutzer zwischen den Flyout Seiten Detail einer FlyoutPage:

Plattformspezifischer Textfarbmodus für Statusleisten