Sdílet prostřednictvím


Velké názvy stránek v iOSu

Tato platforma pro iOS se používá k zobrazení názvu stránky jako velkého názvu na navigačním panelu zařízení NavigationPage, která používají iOS 11 nebo vyšší. Velký název je zarovnaný doleva a používá větší písmo a přechází na standardní název, protože uživatel začne posouvat obsah, aby se nemovitost obrazovky efektivně používala. V orientaci na šířku se ale nadpis vrátí do středu navigačního panelu, aby se optimalizovalo rozložení obsahu. Využívá se v XAML nastavením NavigationPage.PrefersLargeTitles připojené vlastnosti na boolean hodnotu:

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

Alternativně ho můžete využívat z jazyka C# pomocí rozhraní FLUENT API:

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

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

Metoda NavigationPage.On<iOS> určuje, že se tato platforma bude spouštět pouze v iOSu. Metoda NavigationPage.SetPrefersLargeTitle v Xamarin.Forms.PlatformConfiguration.iOSSpecific oboru názvů určuje, zda jsou povolené velké názvy.

Za předpokladu, že jsou na panelu NavigationPagepovolené velké názvy, budou všechny stránky v navigačním zásobníku zobrazovat velké názvy. Toto chování lze na stránkách přepsat nastavením Page.LargeTitleDisplay připojené vlastnosti na hodnotu výčtu LargeTitleDisplayMode :

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

Případně je možné chování stránky přepsat z jazyka C# pomocí rozhraní FLUENT API:

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

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

Metoda Page.On<iOS> určuje, že se tato platforma bude spouštět pouze v iOSu. Metoda Page.SetLargeTitleDisplay v Xamarin.Forms.PlatformConfiguration.iOSSpecific oboru názvů řídí chování velkého názvu ve Pagevýčtu LargeTitleDisplayMode poskytující tři možné hodnoty:

  • Always – vynuťte, aby navigační panel a velikost písma používaly velký formát.
  • Automatic – použijte stejný styl (velký nebo malý) jako předchozí položka v navigačním zásobníku.
  • Never – vynutí použití normálního, malého navigačního panelu.

Kromě toho lze metodu SetLargeTitleDisplay použít k přepnutí hodnot výčtu voláním LargeTitleDisplay metody, která vrací aktuální 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;
}

Výsledkem je použití zadaného LargeTitleDisplayMode objektu Page, který řídí chování velkého názvu:

Rozostření efektu specifické pro platformu