Крупные заголовки страниц в iOSLarge Page Titles on iOS

Скачать пример Скачать примерDownload Sample Download the sample

Эта платформа iOS используется для вывода заголовка страницы в виде большого заголовка панели навигации NavigationPage, для устройств, использующих iOS 11 или более поздней версии.This iOS platform-specific is used to display the page title as a large title on the navigation bar of a NavigationPage, for devices that use iOS 11 or greater. Большой Заголовок выравнивается по левому краю и использует крупный шрифт и переходит в стандартный заголовок как пользователь начинает прокрутка содержимого, чтобы использовалась площади экрана эффективно.A large title is left aligned and uses a larger font, and transitions to a standard title as the user begins scrolling content, so that the screen real estate is used efficiently. Однако в альбомной ориентации заголовок будет возвращать относительно центральной части панели навигации для оптимизации макета содержимого.However, in landscape orientation, the title will return to the center of the navigation bar to optimize content layout. Он используется в XAML, задав NavigationPage.PrefersLargeTitles вложенное свойство, чтобы boolean значение:It's consumed in XAML by setting the NavigationPage.PrefersLargeTitles attached property to a boolean value:

<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:Alternatively it can be consumed from C# using the fluent API:

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.The NavigationPage.On<iOS> method specifies that this platform-specific will only run on iOS. NavigationPage.SetPrefersLargeTitle Метод в Xamarin.Forms.PlatformConfiguration.iOSSpecific пространства имен, управляющий включением крупных названий.The NavigationPage.SetPrefersLargeTitle method, in the Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace, controls whether large titles are enabled.

Условии, что включены крупных названий NavigationPage , все страницы в стеке навигации будут отображены в крупных названий.Provided that large titles are enabled on the NavigationPage, all pages in the navigation stack will display large titles. Это поведение можно переопределить на страницах, задав Page.LargeTitleDisplay присоединенное свойство в значение LargeTitleDisplayMode перечисления:This behavior can be overridden on pages by setting the Page.LargeTitleDisplay attached property to a value of the LargeTitleDisplayMode enumeration:

<ContentPage ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
             Title="Large Title"
             ios:Page.LargeTitleDisplay="Never">
  ...
</ContentPage>

Кроме того поведение страницы может быть переопределено с помощью текучего API в C#:Alternatively, the page behavior can be overridden from C# using the fluent API:

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.The Page.On<iOS> method specifies that this platform-specific will only run on iOS. Page.SetLargeTitleDisplay Метод в Xamarin.Forms.PlatformConfiguration.iOSSpecific пространства имен, управляет поведением большого заголовка на Page , с помощью LargeTitleDisplayMode перечисления, предоставляя три возможных значения:The Page.SetLargeTitleDisplay method, in the Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace, controls the large title behavior on the Page, with the LargeTitleDisplayMode enumeration providing three possible values:

  • Always — Принудительное панели навигации и шрифт размер для использования большого формата.Always – force the navigation bar and font size to use the large format.
  • Automatic — использовать один и тот же стиль (больших или маленьких) с предыдущим элементом в стеке навигации.Automatic – use the same style (large or small) as the previous item in the navigation stack.
  • Never — принудительно использовать панель навигации регулярных "," мелкая форматирования.Never – force the use of the regular, small format navigation bar.

Кроме того SetLargeTitleDisplay метод может использоваться для включения значений перечисления, вызвав LargeTitleDisplay метод, который возвращает текущий LargeTitleDisplayMode:In addition, the SetLargeTitleDisplay method can be used to toggle the enumeration values by calling the LargeTitleDisplay method, which returns the current 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 , которое управляет поведением большого заголовка:The result is that a specified LargeTitleDisplayMode is applied to the Page, which controls the large title behavior: