Režim barev textu panelu NavigationPage v iOSu

Download Sample Stažení ukázky

Tato platforma určuje, jestli je barva NavigationPage textu na stavovém řádku upravena tak, aby odpovídala světelnosti navigačního panelu. Využívá se v XAML nastavením NavigationPage.StatusBarTextColorMode připojené vlastnosti na hodnotu výčtu StatusBarTextColorMode :

<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>

Alternativně ho můžete využívat z jazyka C# pomocí rozhraní FLUENT API:

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

Metoda NavigationPage.On<iOS> určuje, že se tato platforma bude spouštět pouze v iOSu. Metoda NavigationPage.SetStatusBarTextColorMode v Xamarin.Forms.PlatformConfiguration.iOSSpecific oboru názvů určuje, zda je barva textu stavového řádku na panelu NavigationPage upravena tak, aby odpovídala světelnosti navigačního panelu, a StatusBarTextColorMode výčet poskytuje dvě možné hodnoty:

  • DoNotAdjust – označuje, že barva textu stavového řádku by neměla být upravena.
  • MatchNavigationBarTextLuminosity – označuje, že barva textu stavového řádku by měla odpovídat světelnosti navigačního panelu.

Kromě toho lze metodu GetStatusBarTextColorMode použít k načtení aktuální hodnoty výčtu StatusBarTextColorMode použitého na NavigationPage.

Výsledkem je, že barvu textu stavového řádku lze NavigationPage upravit tak, aby odpovídala světelnosti navigačního panelu. V tomto příkladu se barva textu stavového řádku změní, když uživatel přepne mezi Flyout stránkami DetailFlyoutPagea :

Status Bar Text Color Mode Platform-Specific