Compartilhar via


Títulos de páginas grandes no iOS

Este iOS específico da plataforma é 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 de forma eficiente. 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>

Alternativamente, 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 títulos grandes estejam habilitados NavigationPageno , 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 para 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.iOSSpecificPageo comportamento de título grande no , com a LargeTitleDisplayMode enumeração fornecendo três valores possíveis:

  • Always – forçar a barra de navegação e tamanho da fonte para usar o formato grande.
  • Automatic – Use o mesmo estilo (grande ou pequeno) que o item anterior na pilha de navegação.
  • Never – forçar o uso da barra de navegação regular, 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