
iOS 11 ha introducido unas pocas mejoras visuales de las que podemos sacar partido, incluyendo las guías de capa de área segura y títulos grandes. Para los desarrolladores de Xamarin.iOS pueden leer el articulo especifico, Guía para actualizar tu aplicación Xamarin.iOS a iOS11.
Dado que Xamarin.Forms es una capa corriendo por encima de Xamarin.iOS, todas estas características están directamente disponibles.

En este artículo vamos a ir un poco más lejos usando estas características de una forma más sencilla desde Xamarin.Forms.

Usando la capa SafeArea
Para asegurar que el contenido aparece en el área visible de la pantalla del dispositivo, especialmente para evitar el “notch” cuando la aplicación esté corriendo en horizontal en el iPhone X.
Como siempre, en Xamarin.Forms se puede acceder al código de la plataforma Xamarin.iOS para obtener una referencia a sus valores y actualizar las vistas en consecuencia.
En Xamarin.Forms nos lo han querido hacer más sencillo y en la version 2.4.0 Introdujeron el platform-specific para las páginas que usan la capa safe area para crear inserciones correctas en las páginas. Simplemente con añadir el siguiente código en el constructor de la ContentPage.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using Xamarin.Forms.PlatformConfiguration.iOSSpecific; using Xamarin.Forms; namespace iPhoneX { public partial class ItemsPage : ContentPage { public ItemsPage() { InitializeComponent(); On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUseSafeArea(true); } } } |
Este añadido también se puede añadir en la declaración en XAML:
1 2 3 4 5 |
<? xml version="1.0" encoding="UTF-8"?> <ContentPage xmlns = "http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core" ios:Page.UseSafeArea="true" > |
En iOS 11 y posteriores, los limites seguros definidos por Apple se usan para establecer el Padding para el contenido de las capas de la página. Recuerda que esto sobreescribirá los valores de Padding que hayamos establecido anteriormente.
No olvides activar esta característica en cada página donde desees que se aplique.
Xamarin.Forms proporciona algunos valores predeterminados para los valores insertados pero si queremos tener un control más preciso, podemos establecer el el valor de padding nosotros mismos en el contructor o obtener los valores de Thickness desde SafeAreaInsets() y ajustar los valores para establecer el relleno en las vistas para cumplir las necesidades en el método OnAppearing.
1 2 3 4 5 6 7 8 |
protected override void OnAppearing() { base.OnAppearing(); var safeInsets = On<Xamarin.Forms.PlatformConfiguration.iOS>().SafeAreaInsets(); safeInsets.Left = 24; this.Padding = safeInsets; } |