iOS 上的大号页标题
此 iOS 平台特定功能可用于在 NavigationPage
的导航栏上将页标题显示为大标题,适用于使用 iOS 11 或更高版本的设备。 大标题左对齐,使用较大的字体,并在用户开始滚动内容时转换为标准标题,从而能有效地利用屏幕空间。 但是在横向模式下,标题将返回导航栏的中心以优化内容布局。 其使用方式是,在 XAML 中将 NavigationPage.PrefersLargeTitles
附加属性设置为 boolean
值:
<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 上运行。 Xamarin.Forms.PlatformConfiguration.iOSSpecific
命名空间中的 NavigationPage.SetPrefersLargeTitle
方法控制是否启用大标题。
如果在 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 上运行。 Xamarin.Forms.PlatformConfiguration.iOSSpecific
命名空间中的 Page.SetLargeTitleDisplay
方法控制 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
,它控制大标题行为: