Добавление форматирования для iOS

Одним из способов настройки форматирования для iOS является создание настраиваемого отрисовщика для элемента управления и задания стилей и цветов для каждой платформы для конкретной платформы.

Другие варианты управления Xamarin.Forms внешним видом приложения iOS:

Эти альтернативные варианты рассматриваются ниже.

Настройка Info.plist

Файл Info.plist позволяет настроить некоторые аспекты отрисовки приложения iOS, например, как (и ли) отображается строка состояния.

Например, в примере Todo используется следующий код, чтобы задать цвет панели навигации и цвет текста на всех платформах:

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

Результат показан в приведенном ниже фрагменте экрана. Обратите внимание, что элементы строки состояния черные (это не может быть задано внутри Xamarin.Forms , так как это функция для конкретной платформы).

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

В идеале строка состояния также будет белой - то, что мы можем сделать непосредственно в проекте iOS. Добавьте следующие записи в info.plist , чтобы заставить строку состояния быть белой:

iOS Info.plist Entries

или измените соответствующий файл Info.plist напрямую, чтобы включить:

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

Теперь при запуске приложения панель навигации зеленая, а его текст белый (из-за Xamarin.Forms форматирования) и текст строки состояния также белый благодаря конфигурации для iOS:

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

UIAppearance API

UIAppearance API можно использовать для задания визуальных свойств во многих элементах управления iOS без необходимости создания пользовательского отрисовщика.

Добавление одной строки кода в метод AppDelegate.csFinishedLaunching может стиль всех элементов управления заданного типа с помощью их Appearance свойства. Следующий код содержит два примера: глобальное стилизация панели вкладок и элемента управления switch:

AppDelegate.cs в проекте 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

По умолчанию выбранный значок панели вкладок в элементе TabbedPage будет синий:

Default iOS Tab Bar Icon in TabbedPage

Чтобы изменить это поведение, задайте UITabBar.Appearance свойство:

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

Это приводит к тому, что выбранная вкладка будет зеленой:

Green iOS Tab Bar Icon in TabbedPage

С помощью этого API можно настроить внешний Xamarin.FormsTabbedPage вид iOS с очень небольшим кодом. Дополнительные сведения об использовании пользовательского отрисовщика см. в рецепте "Настройка вкладок" для задания определенного шрифта для вкладки.

UISwitch

Элемент Switch управления является другим примером, который можно легко стильировать:

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

Эти два снимка экрана показывают элемент управления по умолчанию слева и настраиваемую версию UISwitch (параметр Appearance) справа в примере Todo:

Default UISwitch ColorCustomized UISwitch Color

Других элементов управления.

Многие элементы управления пользовательским интерфейсом iOS могут иметь свои цвета по умолчанию и другие атрибуты, заданные с помощью UIAppearance API.