Заголовки больших страниц в 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>
Кроме того, его можно использовать из C# с помощью api fluent:
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>
Кроме того, поведение страницы можно переопределить из C# с помощью api fluent:
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
, который управляет поведением большого заголовка: