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 NavigationPage
no , 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.iOSSpecific
Page
o 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 Page
o comportamento do título grande: