Títulos de páginas grandes no iOS

Esse específico da plataforma iOS é usado para exibir o título da página como um título grande na barra de navegação de um NavigationPage, para dispositivos que usam o iOS 11 ou superior. Um título grande é alinhado à esquerda e usa uma fonte maior e faz a transição para um título padrão à medida que o usuário começa a rolar o conteúdo, para que o espaço da tela seja usado com eficiência. No entanto, na orientação paisagem, o título retornará ao centro da barra de navegação para otimizar o layout do conteúdo. Ele é consumido em XAML definindo a propriedade anexada NavigationPage.PrefersLargeTitles como um boolean valor:

<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>

Como alternativa, ele pode ser consumido do C# usando a API fluente:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...

var navigationPage = new Xamarin.Forms.NavigationPage(new iOSLargeTitlePageCS());
navigationPage.On<iOS>().SetPrefersLargeTitles(true);

O método NavigationPage.On<iOS> especifica que essa plataforma específica só será executada no iOS. O NavigationPage.SetPrefersLargeTitle método, no namespace, controla se títulos Xamarin.Forms.PlatformConfiguration.iOSSpecific grandes estão habilitados.

Desde que os títulos grandes estejam ativados no NavigationPage, todas as páginas na pilha de navegação exibirão títulos grandes. Esse comportamento pode ser substituído em páginas definindo a propriedade anexada Page.LargeTitleDisplay como um valor da LargeTitleDisplayMode enumeração:

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

Como alternativa, o comportamento da página pode ser substituído do C# usando a API fluente:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...

public class iOSLargeTitlePageCS : ContentPage
{
    public iOSLargeTitlePageCS(ICommand restore)
    {
        On<iOS>().SetLargeTitleDisplay(LargeTitleDisplayMode.Never);
        ...
    }
    ...
}

O método Page.On<iOS> especifica que essa plataforma específica só será executada no iOS. O Page.SetLargeTitleDisplay método, no namespace, controla Xamarin.Forms.PlatformConfiguration.iOSSpecific o comportamento do título grande no Page, com a LargeTitleDisplayMode enumeração fornecendo três valores possíveis:

  • Always – forçar a barra de navegação e o tamanho da fonte a usar o formato grande.
  • Automatic – use o mesmo estilo (grande ou pequeno) do item anterior na pilha de navegação.
  • Never – forçar o uso da barra de navegação regular e de pequeno formato.

Além disso, o SetLargeTitleDisplay método pode ser usado para alternar os valores de enumeração chamando o LargeTitleDisplay método, que retorna o atual 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;
}

O resultado é que um especificado LargeTitleDisplayMode é aplicado ao , que controla Pageo comportamento do título grande:

Efeito de desfoque específico da plataforma