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