Udostępnij za pośrednictwem


Tytuły dużych stron w systemie iOS

Ta platforma systemu iOS służy do wyświetlania tytułu strony jako dużego tytułu na pasku nawigacyjnym NavigationPageelementu , dla urządzeń korzystających z systemu iOS 11 lub nowszego. Duży tytuł jest wyrównany do lewej i używa większej czcionki, a przejście do standardowego tytułu rozpoczyna przewijanie zawartości, dzięki czemu nieruchomości ekranu są używane wydajnie. Jednak w orientacji poziomej tytuł powróci do środka paska nawigacyjnego, aby zoptymalizować układ zawartości. Jest on używany w języku XAML przez ustawienie dołączonej NavigationPage.PrefersLargeTitlesboolean właściwości na wartość:

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

Alternatywnie można go używać z języka C# przy użyciu płynnego interfejsu 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> określa, że ta platforma będzie działać tylko w systemie iOS. Metoda NavigationPage.SetPrefersLargeTitle w Xamarin.Forms.PlatformConfiguration.iOSSpecific przestrzeni nazw określa, czy są włączone duże tytuły.

Pod warunkiem, że duże tytuły są włączone na NavigationPagestronie , wszystkie strony w stosie nawigacji będą wyświetlać duże tytuły. To zachowanie można zastąpić na stronach, ustawiając Page.LargeTitleDisplay dołączoną właściwość na wartość LargeTitleDisplayMode wyliczenia:

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

Alternatywnie zachowanie strony można zastąpić za pomocą języka C# przy użyciu płynnego interfejsu 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> określa, że ta platforma będzie działać tylko w systemie iOS. Metoda Page.SetLargeTitleDisplay , w Xamarin.Forms.PlatformConfiguration.iOSSpecific przestrzeni nazw, kontroluje duże zachowanie tytułu w Pageobiekcie , z LargeTitleDisplayMode wyliczeniem zapewniającym trzy możliwe wartości:

  • Always — wymusić użycie dużego formatu paska nawigacyjnego i rozmiaru czcionki.
  • Automatic — użyj tego samego stylu (dużego lub małego) co poprzedni element w stosie nawigacji.
  • Never — wymusza użycie zwykłego, małego paska nawigacyjnego formatu.

Ponadto SetLargeTitleDisplay metoda może służyć do przełączania wartości wyliczenia przez wywołanie LargeTitleDisplay metody , która zwraca bieżący LargeTitleDisplayModeelement :

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

Wynikiem jest zastosowanie określonego LargeTitleDisplayModePageelementu do elementu , który kontroluje zachowanie dużego tytułu:

Efekt rozmycia specyficzne dla platformy