iOS 上 NavigationPage 栏半透明

此 iOS 平台特定功能可用于更改 NavigationPage 上导航栏的透明度,并在 XAML 中通过将 NavigationPage.IsNavigationBarTranslucent 附加属性设置为 boolean 值来使用:

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

或者,可以使用 Fluent API 从 C# 使用它:

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

NavigationPage.On<iOS> 方法指定此平台特定功能将仅在 iOS 上运行。 Xamarin.Forms.PlatformConfiguration.iOSSpecific 命名空间中的 NavigationPage.EnableTranslucentNavigationBar 方法用于使导航栏变得半透明。 此外,Xamarin.Forms.PlatformConfiguration.iOSSpecific 命名空间中的 NavigationPage 类还包含将导航栏还原到其默认状态的 DisableTranslucentNavigationBar 方法,以及可用于通过调用 IsNavigationBarTranslucent 方法切换导航栏透明度的 SetIsNavigationBarTranslucent 方法:

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

结果是可以更改导航栏的透明度:

特定于平台的半透明导航栏