Modo de Cor de Texto da Barra de NavigationPage no iOS

Baixar exemplo Baixar o exemplo

Essa plataforma específica controla se a cor do texto da barra de status em um NavigationPage é ajustada para corresponder à luminosidade da barra de navegação. Ele é consumido em XAML definindo a NavigationPage.StatusBarTextColorMode propriedade anexada como um valor da StatusBarTextColorMode enumeração :

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

Como alternativa, ele pode ser consumido do C# usando a API fluente:

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

O NavigationPage.On<iOS> método especifica que esse específico da plataforma só será executado no iOS. O NavigationPage.SetStatusBarTextColorMode método , no Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace , controla se a cor do texto da barra de status no NavigationPage é ajustada para corresponder à luminosidade da barra de navegação, com a StatusBarTextColorMode enumeração fornecendo dois valores possíveis:

  • DoNotAdjust– indica que a cor do texto da barra de status não deve ser ajustada.
  • MatchNavigationBarTextLuminosity– indica que a cor do texto da barra de status deve corresponder à luminosidade da barra de navegação.

Além disso, o GetStatusBarTextColorMode método pode ser usado para recuperar o valor atual da StatusBarTextColorMode enumeração aplicada ao NavigationPage.

O resultado é que a cor do texto da barra de status em um NavigationPage pode ser ajustada para corresponder à luminosidade da barra de navegação. Neste exemplo, a cor do texto da barra de status muda conforme o usuário alterna entre as Flyout páginas e Detail de um FlyoutPage:

Modo de Cor de Texto da Barra de Status Específico da Plataforma