Поделиться через


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

Размытие платформы эффектов