Safe Area Layout Guide (Safe Area Layout Guide) 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, 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:
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;
}