Udostępnij za pośrednictwem


Przewodnik po układzie bezpiecznego obszaru w systemie iOS

Ta platforma systemu iOS służy do zapewnienia, że zawartość strony jest umieszczona w obszarze ekranu, który jest bezpieczny dla wszystkich urządzeń korzystających z systemu iOS 11 i nowszych. W szczególności pomoże to upewnić się, że zawartość nie jest obcięta przez zaokrąglone rogi urządzenia, wskaźnik domu lub obudowa czujnika na iPhone X. Jest on używany w języku XAML przez ustawienie dołączonej Page.UseSafeArea boolean właściwości na wartość:

<ContentPage ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
             Title="Safe Area"
             ios:Page.UseSafeArea="true">
    <StackLayout>
        ...
    </StackLayout>
</ContentPage>

Alternatywnie można go używać z poziomu języka C# przy użyciu płynnego interfejsu API:

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

On<iOS>().SetUseSafeArea(true);

Metoda Page.On<iOS> określa, że ta platforma będzie działać tylko w systemie iOS. Metoda Page.SetUseSafeArea w Xamarin.Forms.PlatformConfiguration.iOSSpecific przestrzeni nazw określa, czy jest włączony przewodnik układu bezpiecznego obszaru.

Wynikiem jest to, że zawartość strony może być umieszczona na obszarze ekranu, który jest bezpieczny dla wszystkich telefonów iPhone:

Układ prowadnic obszaru bezpiecznego

Uwaga

Bezpieczny obszar zdefiniowany przez firmę Apple jest używany do Xamarin.Forms ustawiania Page.Padding właściwości i zastąpi wszystkie poprzednie wartości tej właściwości, które zostały ustawione.

Bezpieczny obszar można dostosować, pobierając jego Thickness wartość za Page.SafeAreaInsets pomocą metody z Xamarin.Forms.PlatformConfiguration.iOSSpecific przestrzeni nazw. Następnie można ją zmodyfikować zgodnie z wymaganiami i ponownie przypisać do Padding właściwości w zastąpieniu OnAppearing :

protected override void OnAppearing()
{
    base.OnAppearing();

    var safeInsets = On<iOS>().SafeAreaInsets();
    safeInsets.Left = 20;
    Padding = safeInsets;
}