Adicionando formatação específica do iOS

Uma maneira de definir a formatação específica do iOS é criar um renderizador personalizado para um controle e definir estilos e cores específicos da plataforma para cada plataforma.

Outras opções para controlar a aparência Xamarin.Forms do aplicativo iOS incluem:

Essas alternativas são discutidas abaixo.

Personalizando Info.plist

O arquivo Info.plist permite configurar alguns aspectos da renderização de um aplicativo iOS, como (e se) a barra de status é mostrada.

Por exemplo, o exemplo todo usa o seguinte código para definir a cor da barra de navegação e a cor do texto em todas as plataformas:

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

O resultado é mostrado no snippet de tela abaixo. Observe que os itens da barra de status são pretos (isso não pode ser definido dentro Xamarin.Forms porque é um recurso específico da plataforma).

Captura de tela que mostra o Tema do iOS com status itens de barra em texto preto.

O ideal é que a barra de status também seja branca – algo que podemos realizar diretamente no projeto do iOS. Adicione as seguintes entradas ao Info.plist para forçar a barra de status a ser branca:

Entradas do iOS Info.plist

ou edite o arquivo Info.plist correspondente diretamente para incluir:

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

Agora, quando o aplicativo é executado, a barra de navegação é verde e seu texto é branco (devido à Xamarin.Forms formatação) e o texto da barra de status também é branco graças à configuração específica do iOS:

Captura de tela que mostra o Tema do iOS com status itens de barra em texto em branco.

UIAppearance API

A UIAppearance API pode ser usada para definir propriedades visuais em muitos controles iOS sem precisar criar um renderizador personalizado.

Adicionar uma única linha de código ao método AppDelegate.cs pode estilizar todos os controles FinishedLaunching de um determinado tipo usando sua Appearance propriedade. O código a seguir contém dois exemplos : estilo global da barra de tabulação e controle de comutador:

AppDelegate.cs no projeto do 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

Por padrão, o ícone de barra de guias selecionado em umTabbedPage seria azul:

Ícone padrão da barra de guias do iOS em TabbedPage

Para alterar esse comportamento, defina a UITabBar.Appearance propriedade :

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

Isso faz com que a guia selecionada seja verde:

Ícone da barra de guias do iOS verde em TabbedPage

Usar essa API permite personalizar a aparência do Xamarin.FormsTabbedPage no iOS com muito pouco código. Consulte a receita Personalizar Guias para obter mais detalhes sobre como usar um renderizador personalizado para definir uma fonte específica para a guia.

UISwitch

O Switch controle é outro exemplo que pode ser facilmente estilizado:

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

Essas duas capturas de tela mostram o controle padrão UISwitch à esquerda e a versão personalizada (configurando Appearance) à direita no exemplo Todo:

Cor UISwitchpadrão personalizada cor UISwitch

Outros controles

Muitos controles de interface do usuário do iOS podem ter suas cores padrão e outros atributos definidos usando a UIAppearance API.