Condividi tramite


Titoli di pagine di grandi dimensioni in iOS

Questa interfaccia utente dell'app multipiattaforma .NET (.NET MAUI) specifica della piattaforma iOS viene usata 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://schemas.microsoft.com/dotnet/2021/maui"
                xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                xmlns:ios="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls"
                ...
                ios:NavigationPage.PrefersLargeTitles="true">
  ...
</NavigationPage>

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

using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
...

var navigationPage = new Microsoft.Maui.Controls.NavigationPage(new iOSLargeTitlePageCode());
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 Microsoft.Maui.Controls.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:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls"
             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 Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
...

public class iOSLargeTitlePageCode : ContentPage
{
    public iOSLargeTitlePageCode
    {
        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 Microsoft.Maui.Controls.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:

Page title as a large title.