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
: