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 Page
o comportamento do título grande: