Compartir vía


Translucidez de la barra NavigationPage en iOS

Esta característica específica de la plataforma iOS se usa para cambiar la transparencia de la barra de navegación en un objeto NavigationPage y se consume en XAML estableciendo la propiedad adjunta NavigationPage.IsNavigationBarTranslucent en un valor boolean:

<NavigationPage ...
                xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
                BackgroundColor="Blue"
                ios:NavigationPage.IsNavigationBarTranslucent="true">
  ...
</NavigationPage>

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

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

(App.Current.MainPage as Xamarin.Forms.NavigationPage).BackgroundColor = Color.Blue;
(App.Current.MainPage as Xamarin.Forms.NavigationPage).On<iOS>().EnableTranslucentNavigationBar();

El método NavigationPage.On<iOS> especifica que esta plataforma específica solo se ejecutará en iOS. El método NavigationPage.EnableTranslucentNavigationBar, en el espacio de nombres Xamarin.Forms.PlatformConfiguration.iOSSpecific, se usa para hacer translúcida la barra de navegación. Además, la clase NavigationPage del espacio de nombres Xamarin.Forms.PlatformConfiguration.iOSSpecific también tiene un método DisableTranslucentNavigationBar que restaura la barra de navegación a su estado predeterminado, y un método SetIsNavigationBarTranslucent que se puede usar para alternar la transparencia de la barra de navegación llamando al método IsNavigationBarTranslucent:

(App.Current.MainPage as Xamarin.Forms.NavigationPage)
  .On<iOS>()
  .SetIsNavigationBarTranslucent(!(App.Current.MainPage as Xamarin.Forms.NavigationPage).On<iOS>().IsNavigationBarTranslucent());

El resultado es que se puede cambiar la transparencia de la barra de navegación:

Barra de navegación translúcida específica de la plataforma