iOS'ta Büyük Sayfa Başlıkları

Bu iOS platformuna özgü, iOS 11 veya üzerini kullanan cihazlarda sayfa başlığını bir gezinti çubuğunda büyük bir NavigationPagebaşlık olarak görüntülemek için kullanılır. Büyük bir başlık sola hizalanır ve daha büyük bir yazı tipi kullanır ve kullanıcı içeriği kaydırmaya başladığında standart bir başlığa geçiş yaparak ekran emlaklarının verimli bir şekilde kullanılması sağlanır. Ancak, yatay yönde başlık, içerik düzenini iyileştirmek için gezinti çubuğunun ortasına döner. Ekli özelliği bir boolean değere ayarlayarak NavigationPage.PrefersLargeTitles XAML'de kullanılır:

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

Alternatif olarak, akıcı API kullanılarak C# dilinden de kullanılabilir:

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

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

NavigationPage.On<iOS> yöntemi, platforma özgü bu uygulamanın yalnızca iOS üzerinde çalışacağını belirtir. NavigationPage.SetPrefersLargeTitle yöntemi, ad alanında büyük başlıkların Xamarin.Forms.PlatformConfiguration.iOSSpecific etkinleştirilip etkinleştirilmediğini denetler.

üzerinde büyük başlıkların etkinleştirilmesi koşuluyla NavigationPage, gezinti yığınındaki tüm sayfalarda büyük başlıklar görüntülenir. Bu davranış, eklenen özellik sabit listesi değerine LargeTitleDisplayMode ayarlanarak Page.LargeTitleDisplay sayfalarda geçersiz kılınabilir:

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

Alternatif olarak, sayfa davranışı akıcı API kullanılarak C# ile geçersiz kılınabilir:

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

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

Page.On<iOS> yöntemi, platforma özgü bu uygulamanın yalnızca iOS üzerinde çalışacağını belirtir. Page.SetLargeTitleDisplay yöntemi, ad alanında Xamarin.Forms.PlatformConfiguration.iOSSpecific büyük başlık davranışını Pagedenetler ve LargeTitleDisplayMode numaralandırma üç olası değer sağlar:

  • Always – gezinti çubuğunu ve yazı tipi boyutunu büyük biçimi kullanmaya zorlar.
  • Automatic – gezinti yığınındaki önceki öğeyle aynı stili (büyük veya küçük) kullanın.
  • Never – normal, küçük biçimli gezinti çubuğunun kullanımını zorlar.

Ayrıca yöntemi, SetLargeTitleDisplay geçerli LargeTitleDisplayModedeğerini döndüren yöntemini çağırarak LargeTitleDisplay numaralandırma değerlerini değiştirmek için kullanılabilir:

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

Sonuç, belirtilen LargeTitleDisplayMode bir öğesinin Pagebüyük başlık davranışını denetleyen öğesine uygulanmasıdır:

Bulanıklaştırma Efekti Platforma Özgü