Safe Area Layout Guide (Safe Area Layout Guide) unter iOS

Beispiel herunterladen Das Beispiel herunterladen

Diese plattformspezifische iOS-Plattform wird verwendet, um sicherzustellen, dass Seiteninhalte auf einem Bereich des Bildschirms positioniert werden, der für alle Geräte, die iOS 11 und höher verwenden, sicher ist. Insbesondere wird es helfen, sicherzustellen, dass Inhalte nicht durch abgerundete Geräteecken, die Home-Anzeige oder das Sensorgehäuse auf einem iPhone X beschnitten werden. Sie wird in XAML verwendet, indem die Page.UseSafeArea angefügte Eigenschaft auf einen boolean Wert festgelegt wird:

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

Alternativ kann es über C# mithilfe der Fluent-API verwendet werden:

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

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

Die Page.On<iOS> -Methode gibt an, dass diese plattformspezifische Nur unter iOS ausgeführt wird. Die Page.SetUseSafeArea -Methode im Xamarin.Forms.PlatformConfiguration.iOSSpecific -Namespace steuert, ob die Anleitung für das Layout des sicheren Bereichs aktiviert ist.

Das Ergebnis ist, dass Seiteninhalte auf einem Bereich des Bildschirms positioniert werden können, der für alle iPhones sicher ist:

Safe Area Layout Guide Safe Area Layout Guide

Hinweis

Der von Apple definierte sichere Bereich wird in Xamarin.Forms verwendet, um die Page.Padding -Eigenschaft festzulegen, und überschreibt alle vorherigen Werte dieser Eigenschaft, die festgelegt wurden.

Der sichere Bereich kann angepasst werden, indem der Thickness Wert mit der Page.SafeAreaInsets -Methode aus dem Xamarin.Forms.PlatformConfiguration.iOSSpecific Namespace abgerufen wird. Sie kann dann wie erforderlich geändert und der Padding Eigenschaft in der OnAppearing Außerkraftsetzung erneut zugewiesen werden:

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

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