Títulos de página grandes en iOS

Ejemplo de descarga Descarga del ejemplo

Esta plataforma específica de iOS se usa para mostrar el título de la página como un título grande en la barra de navegación de un , para dispositivos que usan NavigationPage iOS 11 o superior. Un título grande se alinea a la izquierda y usa una fuente más grande, y pasa a un título estándar a medida que el usuario comienza a desplazar el contenido, de modo que el patrimonio de pantalla se use de forma eficaz. Sin embargo, en orientación horizontal, el título volverá al centro de la barra de navegación para optimizar el diseño del contenido. Se consume en XAML estableciendo la NavigationPage.PrefersLargeTitles propiedad adjunta en un 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, se puede consumir desde C# mediante la API fluida:

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

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

El NavigationPage.On<iOS> método especifica que esta plataforma específica solo se ejecutará en iOS. El NavigationPage.SetPrefersLargeTitle método, en el espacio Xamarin.Forms.PlatformConfiguration.iOSSpecific de nombres , controla si los títulos grandes están habilitados.

Siempre que los títulos grandes estén habilitados en , todas las páginas de NavigationPage la pila de navegación mostrarán títulos grandes. Este comportamiento se puede invalidar en las páginas estableciendo la Page.LargeTitleDisplay propiedad adjunta en un valor de la LargeTitleDisplayMode enumeración :

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

Como alternativa, el comportamiento de la página se puede invalidar desde C# mediante la API fluida:

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

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

El Page.On<iOS> método especifica que esta plataforma específica solo se ejecutará en iOS. El método, en el espacio de nombres , controla el comportamiento de título grande en , y Page.SetLargeTitleDisplayXamarin.Forms.PlatformConfiguration.iOSSpecific la PageLargeTitleDisplayMode enumeración proporciona tres valores posibles:

  • Always : fuerza la barra de navegación y el tamaño de fuente para que usen el formato grande.
  • Automatic : use el mismo estilo (grande o pequeño) que el elemento anterior en la pila de navegación.
  • Never : fuerza el uso de la barra de navegación de formato pequeño y normal.

Además, el método se puede usar para alternar los valores de enumeración llamando al SetLargeTitleDisplay método , que devuelve el objeto LargeTitleDisplayLargeTitleDisplayMode actual:

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

El resultado es que se aplica un LargeTitleDisplayMode especificado a , que controla el comportamiento de título Page grande:

Efecto de desenfoque específico de la plataforma