Guia de layout de área segura no iOS

Baixar exemplo Baixar o exemplo

Essa plataforma iOS específica é usada para garantir que o conteúdo da página esteja posicionado em uma área da tela que seja segura para todos os dispositivos que usam o iOS 11 e superior. Especificamente, ele ajudará a garantir que o conteúdo não seja recortado por cantos arredondados do dispositivo, pelo indicador doméstico ou pela caixa do sensor em um iPhone X. Ele é consumido em XAML definindo a Page.UseSafeArea propriedade anexada como um boolean valor:

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

Como alternativa, ele pode ser consumido do C# usando a API fluente:

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

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

O Page.On<iOS> método especifica que esse específico da plataforma só será executado no iOS. O Page.SetUseSafeArea método, no Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace , controla se o guia de layout de área segura está habilitado.

O resultado é que o conteúdo da página pode ser posicionado em uma área da tela segura para todos os iPhones:

Segura Guia de Layout de Área Segura

Observação

A área segura definida pela Apple é usada no Xamarin.Forms para definir a propriedade e substituirá todos os Page.Padding valores anteriores dessa propriedade que foram definidos.

A área segura pode ser personalizada recuperando seu Thickness valor com o Page.SafeAreaInsets método do Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace . Em seguida, ele pode ser modificado conforme necessário e reatribuido à Padding propriedade na substituição OnAppearing :

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

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