Compartir vía


Modo de color del texto de barra NavigationPage en iOS

Esta característica específica de la plataforma controla si el color del texto de la barra de estado en un control NavigationPage se ajusta para que coincida con la luminosidad de la barra de navegación. Se consume en XAML estableciendo la propiedad asociada NavigationPage.StatusBarTextColorMode en un valor de la enumeración 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>

Como alternativa, se puede consumir desde C# mediante la API fluida:

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

El método NavigationPage.On<iOS> especifica que esta plataforma específica solo se ejecutará en iOS. El método NavigationPage.SetStatusBarTextColorMode, del espacio de nombres Xamarin.Forms.PlatformConfiguration.iOSSpecific, controla si el color del texto de la barra de estado de NavigationPage se ajusta para que coincida con la luminosidad de la barra de navegación, y la enumeración StatusBarTextColorMode proporciona dos valores posibles:

  • DoNotAdjust: indica que no se debe ajustar el color del texto de la barra de estado.
  • MatchNavigationBarTextLuminosity: indica que el color del texto de la barra de estado debería coincidir con la luminosidad de la barra de navegación.

Además, el método GetStatusBarTextColorMode se puede usar para recuperar el valor actual de la enumeración StatusBarTextColorMode que se aplica a NavigationPage.

El resultado es que el color del texto de la barra de estado de un elemento NavigationPage se puede ajustar para que coincida con la luminosidad de la barra de navegación. En este ejemplo, el color del texto de la barra de estado cambia a medida que el usuario cambia entre las páginas Flyout y Detail de FlyoutPage:

Modo de color de texto de la barra de estado específico de la plataforma