iOS 上的大号页标题
对于使用 iOS 11 或更高版本的设备,此 .NET Multi-platform App UI (.NET MAUI) iOS 平台特定功能用于在 NavigationPage 的导航栏上将页标题显示为大标题。 大标题左对齐,使用较大的字体,并在用户开始滚动内容时转换为标准标题,从而能有效地利用屏幕空间。 但是在横向模式下,标题将返回导航栏的中心以优化内容布局。 其使用方式是,在 XAML 中将 NavigationPage.PrefersLargeTitles
附加属性设置为 boolean
值:
<NavigationPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:ios="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls"
...
ios:NavigationPage.PrefersLargeTitles="true">
...
</NavigationPage>
也可以使用 Fluent API 从 C# 中使用它:
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
...
var navigationPage = new Microsoft.Maui.Controls.NavigationPage(new iOSLargeTitlePageCode());
navigationPage.On<iOS>().SetPrefersLargeTitles(true);
NavigationPage.On<iOS>
方法指定此平台特定功能将仅在 iOS 上运行。 Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific
命名空间中的 NavigationPage.SetPrefersLargeTitle
方法控制是否启用大标题。
如果在 NavigationPage 上启用了大标题,则导航堆栈中的所有页面都将显示大标题。 将 Page.LargeTitleDisplay
附加属性设置为 LargeTitleDisplayMode
枚举的值即可在页面上重写此行为:
<ContentPage ...
xmlns:ios="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls"
Title="Large Title"
ios:Page.LargeTitleDisplay="Never">
...
</ContentPage>
也可以使用 Fluent API 从 C# 中重写页面行为:
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
...
public class iOSLargeTitlePageCode : ContentPage
{
public iOSLargeTitlePageCode
{
On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Never);
}
...
}
该 Page.On<iOS>
方法指定此平台特定仅在 iOS 上运行。 Microsoft.Maui.Controls.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,它控制大标题行为: