Agregar formato específico de iOS

Una manera de establecer el formato específico de iOS es crear un representador personalizado para un control y establecer estilos y colores específicos de la plataforma para cada plataforma.

Otras opciones para controlar la forma en que el Xamarin.Forms aspecto de la aplicación iOS incluyen:

Estas alternativas se describen a continuación.

Personalización de Info.plist

El archivo Info.plist permite configurar algunos aspectos de la representación de una aplicación de iOS, como cómo (y si) se muestra la barra de estado.

Por ejemplo, el ejemplo Todo usa el código siguiente para establecer el color de la barra de navegación y el color de texto en todas las plataformas:

var nav = new NavigationPage (new TodoListPage ());
nav.BarBackgroundColor = Color.FromHex("91CA47");
nav.BarTextColor = Color.White;

El resultado se muestra en el fragmento de pantalla siguiente. Observe que los elementos de la barra de estado son negros (no se puede establecer dentro de Xamarin.Forms porque es una característica específica de la plataforma).

Screenshot show iOS Theming with status bar items in black text.

Idealmente, la barra de estado también sería blanca: algo que podemos lograr directamente en el proyecto de iOS. Agregue las siguientes entradas al Info.plist para forzar que la barra de estado sea blanca:

iOS Info.plist Entries

o edite el archivo Info.plist correspondiente directamente para incluir:

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

Ahora, cuando se ejecuta la aplicación, la barra de navegación es verde y su texto es blanco (debido a Xamarin.Forms formato) y el texto de la barra de estado también es blanco gracias a la configuración específica de iOS:

Screenshot show iOS Theming with status bar items in white text.

UIAppearance API

La UIAppearance API se puede usar para establecer propiedades visuales en muchos controles de iOS sin tener que crear un representador personalizado.

Agregar una sola línea de código al método AppDelegate.csFinishedLaunching puede aplicar estilo a todos los controles de un tipo determinado mediante su propiedad Appearance. El código siguiente contiene dos ejemplos: aplicar estilos globales a la barra de pestañas y al control switch:

AppDelegate.cs en el proyecto de iOS

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
  // tab bar
    UITabBar.Appearance.SelectedImageTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47); // green
  // switch
    UISwitch.Appearance.OnTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47); // green
    // required Xamarin.Forms code
    Forms.Init ();
    LoadApplication (new App ());
    return base.FinishedLaunching (app, options);
}

UITabBar

De forma predeterminada, el icono de la barra de pestañas seleccionada en un TabbedPage sería azul:

Default iOS Tab Bar Icon in TabbedPage

Para cambiar este comportamiento, establezca la propiedad UITabBar.Appearance:

UITabBar.Appearance.SelectedImageTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47); // green

Esto hace que la pestaña seleccionada sea verde:

Green iOS Tab Bar Icon in TabbedPage

El uso de esta API le permite personalizar la apariencia del Xamarin.FormsTabbedPage en iOS con muy poco código. Consulte la receta Personalizar pestañas para obtener más detalles sobre el uso de un representador personalizado para establecer una fuente específica para la pestaña.

UISwitch

El Switch control es otro ejemplo al que se puede aplicar un estilo sencillo:

UISwitch.Appearance.OnTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47); // green

Estas dos capturas de pantalla muestran el control de UISwitch predeterminado a la izquierda y la versión personalizada (estableciendo Appearance) a la derecha del ejemplo Todo:

Default UISwitch ColorCustomized UISwitch Color

Otros controles

Muchos controles de interfaz de usuario de iOS pueden tener sus colores predeterminados y otros atributos establecidos mediante la UIAppearance API.