Freigeben über


Leitfaden für das Layout für sichere Bereiche unter iOS

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

<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 sie mit der Fluent-API von C# genutzt werden:

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

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

Die Methode Page.On<iOS> gibt an, dass diese plattformspezifische Funktion nur unter iOS ausführbar ist. Die Page.SetUseSafeArea Methode steuert im Xamarin.Forms.PlatformConfiguration.iOSSpecific Namespace, ob das Layouthandbuch für sichere Bereiche aktiviert ist.

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

Führungslinie für das Sicherheitsbereichslayout

Hinweis

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

Der sichere Bereich kann angepasst werden, indem er seinen Thickness Wert mit der Page.SafeAreaInsets Methode aus dem Xamarin.Forms.PlatformConfiguration.iOSSpecific Namespace abruft. Sie kann dann nach Bedarf geändert und der Eigenschaft in der Padding OnAppearing Außerkraftsetzung erneut zugewiesen werden:

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

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