Condividi tramite


Titoli di pagine di grandi dimensioni in iOS

Questo specifico della piattaforma iOS viene usato per visualizzare il titolo della pagina come titolo di grandi dimensioni sulla barra di spostamento di un NavigationPage, per i dispositivi che usano iOS 11 o versione successiva. Un titolo di grandi dimensioni viene allineato a sinistra e usa un tipo di carattere più grande e passa a un titolo standard man mano che l'utente inizia a scorrere il contenuto, in modo che il patrimonio dello schermo venga usato in modo efficiente. Tuttavia, nell'orientamento orizzontale, il titolo tornerà al centro della barra di spostamento per ottimizzare il layout del contenuto. Viene utilizzato in XAML impostando la NavigationPage.PrefersLargeTitles proprietà associata su un boolean valore:

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

In alternativa, può essere usato da C# usando l'API Fluent:

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

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

Il NavigationPage.On<iOS> metodo specifica che questa piattaforma verrà eseguita solo in iOS. Il NavigationPage.SetPrefersLargeTitle metodo, nello spazio dei Xamarin.Forms.PlatformConfiguration.iOSSpecific nomi , controlla se i titoli di grandi dimensioni sono abilitati.

Se i titoli di grandi dimensioni sono abilitati in NavigationPage, tutte le pagine nello stack di spostamento visualizzeranno titoli di grandi dimensioni. Questo comportamento può essere sottoposto a override nelle pagine impostando la Page.LargeTitleDisplay proprietà associata su un valore dell'enumerazione LargeTitleDisplayMode :

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

In alternativa, è possibile eseguire l'override del comportamento della pagina da C# usando l'API Fluent:

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

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

Il Page.On<iOS> metodo specifica che questa piattaforma verrà eseguita solo in iOS. Il Page.SetLargeTitleDisplay metodo, nello spazio dei Xamarin.Forms.PlatformConfiguration.iOSSpecific nomi , controlla il comportamento del titolo di grandi dimensioni in Page, con l'enumerazione LargeTitleDisplayMode che fornisce tre valori possibili:

  • Always : forzare la barra di spostamento e le dimensioni del carattere per usare il formato grande.
  • Automatic : usare lo stesso stile (grande o piccolo) dell'elemento precedente nello stack di navigazione.
  • Never : forzare l'uso della normale barra di spostamento in formato piccolo.

Inoltre, il SetLargeTitleDisplay metodo può essere usato per attivare o disattivare i valori di enumerazione chiamando il LargeTitleDisplay metodo , che restituisce l'oggetto corrente 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;
}

Il risultato è che un oggetto specificato LargeTitleDisplayMode viene applicato a Page, che controlla il comportamento del titolo di grandi dimensioni:

Effetto sfocatura specifico della piattaforma