iOS 上的大型頁面標題

Download Sample 下載範例

對於使用 iOS 11 或更新版本的裝置,此 iOS 平臺特定是用來在 導覽列 NavigationPage上將頁面標題顯示為大型標題。 大標題靠左對齊,並使用較大的字型,並在用戶開始捲動內容時轉換為標準標題,以便有效率地使用屏幕房地產。 不過,在橫向方向中,標題會回到導覽列的中心,以優化內容配置。 將附加屬性設定 NavigationPage.PrefersLargeTitlesboolean 值,以在 XAML 中取用:

<NavigationPage 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"
                ...
                ios:NavigationPage.PrefersLargeTitles="true">
  ...
</NavigationPage>

或者,您可以使用 Fluent API 從 C# 取用它:

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

var navigationPage = new Xamarin.Forms.NavigationPage(new iOSLargeTitlePageCS());
navigationPage.On<iOS>().SetPrefersLargeTitles(true);

方法 NavigationPage.On<iOS> 會指定此平台專屬只會在iOS上執行。 命名空間 NavigationPage.SetPrefersLargeTitle 中的 Xamarin.Forms.PlatformConfiguration.iOSSpecific 方法會控制是否啟用大型標題。

只要在 上 NavigationPage啟用大型標題,導覽堆疊中的所有頁面都會顯示大型標題。 將附加屬性設定 Page.LargeTitleDisplay 為 列舉值 LargeTitleDisplayMode ,即可在頁面上覆寫此行為:

<ContentPage ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
             Title="Large Title"
             ios:Page.LargeTitleDisplay="Never">
  ...
</ContentPage>

或者,您也可以使用 Fluent API 從 C# 覆寫頁面行為:

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

public class iOSLargeTitlePageCS : ContentPage
{
    public iOSLargeTitlePageCS(ICommand restore)
    {
        On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Never);
        ...
    }
    ...
}

方法 Page.On<iOS> 會指定此平台專屬只會在iOS上執行。 在 Page.SetLargeTitleDisplay 命名空間中 Xamarin.Forms.PlatformConfiguration.iOSSpecific ,方法會控制 上的 Page大型標題行為,而 LargeTitleDisplayMode 列舉會提供三個可能的值:

  • Always – 強制導覽列和字型大小使用大格式。
  • Automatic – 使用與瀏覽堆疊中上一個專案相同的樣式(大或小)。
  • Never – 強制使用一般小型格式導覽列。

此外, SetLargeTitleDisplay 方法可用來藉由呼叫 LargeTitleDisplay 方法來切換列舉值,此方法會傳回目前的 LargeTitleDisplayMode

switch (On<iOS>().LargeTitleDisplay())
{
    case LargeTitleDisplayMode.Always:
        On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Automatic);
        break;
    case LargeTitleDisplayMode.Automatic:
        On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Never);
        break;
    case LargeTitleDisplayMode.Never:
        On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Always);
        break;
}

結果是,指定的 LargeTitleDisplayMode 會套用至 Page,以控制大型標題行為:

Blur Effect Platform-Specific