Títulos de Página Grande no iOS

Baixar exemplo Baixar o exemplo

Essa plataforma específica do iOS é usada 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 imóvel 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 de conteúdo. Ele é consumido em XAML definindo a NavigationPage.PrefersLargeTitles propriedade anexada 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 NavigationPage.On<iOS> método especifica que essa plataforma específica só será executada no iOS. O NavigationPage.SetPrefersLargeTitle método, no Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace, controla se títulos grandes estão habilitados.

Desde que títulos grandes estejam habilitados no NavigationPage, todas as páginas na pilha de navegação exibirão títulos grandes. Esse comportamento pode ser substituído nas páginas definindo a Page.LargeTitleDisplay propriedade anexada 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 Page.On<iOS> método especifica que essa plataforma específica só será executada no iOS. O Page.SetLargeTitleDisplay método, no Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace, controla o comportamento de título grande no Page, com a LargeTitleDisplayMode enumeração fornecendo três valores possíveis:

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

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 Page, que controla o comportamento de título grande:

Específico da plataforma de efeito de desfoque