API внешнего вида в Xamarin.iOS

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

Эта функция предоставляется в Xamarin.iOS через статическое Appearance свойство для всех элементов управления UIKit, поддерживающих его. Внешний вид (такие свойства, как цвет и изображение фона) можно легко настроить для обеспечения согласованного внешнего вида приложения. API внешнего вида был представлен в iOS 5 и в то время как некоторые части его были устарели в iOS 9, это по-прежнему хороший способ достичь некоторых стилей и тематических эффектов в приложениях Xamarin.iOS.

Обзор

iOS позволяет настроить внешний вид многих элементов управления UIKit, чтобы стандартные элементы управления соответствовали фирменной символики, которую вы хотите применить к приложению.

Существует два разных способа применения пользовательского внешнего вида:

  • Непосредственно на экземпляре элемента управления можно задать цвет, фоновое изображение и положение заголовка (а также некоторые другие атрибуты) во многих элементах управления, включая панели инструментов, панели навигации, кнопки и ползунки.

  • Задайте значения по умолчанию для статического свойства "Внешний вид" — настраиваемые атрибуты для каждого элемента управления предоставляются через Appearance статическое свойство. Все настройки, применяемые к этим свойствам, будут использоваться в качестве значения по умолчанию для любого элемента управления этого типа, созданного после установки свойства.

Пример приложения "Внешний вид" демонстрирует все три метода, как показано на следующих снимках экрана:

Пример приложения

По состоянию на iOS 8 прокси-сервер внешнего вида был расширен до TraitCollections. AppearanceForTraitCollection можно использовать для задания внешнего вида по умолчанию для определенной коллекции атрибутов. Дополнительные сведения см. в руководстве по раскадровкам .

Настройка свойств внешнего вида

На первом экране статический класс "Внешний вид" используется для стиля кнопок и желтых и оранжевых элементов, как показано ниже:

// Set the default appearance values
UIButton.Appearance.TintColor = UIColor.LightGray;
UIButton.Appearance.SetTitleColor(UIColor.FromRGB(0,127,14), UIControlState.Normal);

UISlider.Appearance.ThumbTintColor = UIColor.Red;
UISlider.Appearance.MinimumTrackTintColor = UIColor.Orange;
UISlider.Appearance.MaximumTrackTintColor = UIColor.Yellow;

UIProgressView.Appearance.ProgressTintColor = UIColor.Yellow;
UIProgressView.Appearance.TrackTintColor = UIColor.Orange;

Стили зеленых элементов задаются следующим образом, в методе ViewDidLoad , который переопределяет значения по умолчанию и статический класс "Внешний вид ":

slider2.ThumbTintColor = UIColor.FromRGB (0,127,70); // dark green
slider2.MinimumTrackTintColor = UIColor.FromRGB (66,255,63);
slider2.MaximumTrackTintColor = UIColor.FromRGB (197,255,132);
progress2.ProgressTintColor = UIColor.FromRGB (66,255,63);
progress2.TrackTintColor = UIColor.FromRGB (197,255,132);

Использование UIAppearance в Xamarin.Forms

API внешнего вида может быть полезным при стилизации приложения iOS в решениях Xamarin.Forms. Несколько строк в AppDelegate классе могут помочь реализовать определенную цветовую схему, не создавая пользовательский отрисовщик.

Пользовательские темы и UIAppearance

iOS позволяет использовать множество визуальных атрибутов элементов управления пользовательского интерфейса с помощью API UIAppearance , чтобы принудительно принудить все экземпляры определенного элемента управления иметь одинаковый внешний вид. Это предоставляется как свойство "Внешний вид" во многих классах элементов управления пользовательского интерфейса, а не в отдельных экземплярах элемента управления. Настройка свойства отображения для статического Appearance свойства влияет на все элементы управления этого типа в приложении.

Чтобы лучше понять концепцию, рассмотрим пример.

Чтобы изменить определенный UISegmentedControl цвет, чтобы иметь тон Magenta, мы будем ссылаться на конкретный элемент управления на нашем экране, как в следующем ViewDidLoad:

sg1.TintColor = UIColor.Magenta;

Кроме того, задайте значение на панели свойств конструктора:

Панель свойств Tint

На рисунке ниже показано, что он задает оттенок только элемента управления с именем sg1.

Настройка тонирования отдельного элемента управления

Чтобы задать множество элементов управления таким образом, будет полностью неэффективным, поэтому мы можем вместо этого задать статическое Appearance свойство для самого класса. Это показано в приведенном ниже коде:

UISegmentedControl.Appearance.TintColor = UIColor.Magenta;

На рисунке ниже показаны оба сегментированных элемента управления с внешним видом, равным Magenta:

Настройка оттенка элемента управления

Appearance свойства должны быть заданы в начале жизненного цикла приложения, например в событии AppDelegate FinishedLaunching , или в ViewController перед отображением затронутых элементов управления.

Дополнительные сведения см. в разделе "Введение в API внешнего вида".