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

iOS позволяет применить параметры visual свойств на уровне статический класс, а не к отдельным объектам, таким образом, чтобы изменение применяется ко всем экземплярам этого элемента управления в приложении.iOS lets you apply visual property settings at a static class level rather than on individual objects so that the change applies to all instances of that control in the application.

Эта функция предоставляется в Xamarin.iOS с помощью статического Appearance свойство для всех элементов управления UIKit, которые ее поддерживают.This functionality is exposed in Xamarin.iOS via a static Appearance property on all UIKit controls that support it. Внешний вид (такие как свойства как оттенок цвета и фоновое изображение) таким образом легко настраивается для предоставления согласованного внешнего вида приложения.Visual appearance (properties like as tint color and background image) can therefore be easily customized to give your application a consistent look. Внешний API был введен в iOS 5 и хотя некоторые его части, которые стали нерекомендуемыми в iOS 9 это по-прежнему хороший способ достижения некоторые стили и темы эффектов в приложениях Xamarin.iOS.The Appearance API was introduced in iOS 5 and while some parts of it have been deprecated in iOS 9 it is still a good way to achieve some styling and theming effects in Xamarin.iOS apps.

ОбзорOverview

iOS позволяет настроить внешний вид множество элементов управления UIKit стандартным элементам управления, в соответствующих элементах фирменного стиля, которые необходимо применить к приложению.iOS allows you customize the appearance of many UIKit controls to make the standard controls conform to the branding you wish to apply to your application.

Чтобы применить пользовательское оформление двумя способами:There are two different ways to apply a custom appearance:

  • Непосредственно в экземпляре элемента управления — можно задать цвет оттенка, фоновое изображение и заголовок выровнен (а также некоторых других атрибутов) на множество элементов управления, включая панели инструментов, панели навигации, кнопок и ползунков.Directly on a control instance – you can set the tint color, background image and title position (as well as some other attributes) on many controls including toolbars, navigation bars, buttons and sliders.

  • Настройка параметров по умолчанию на внешний вид статического свойства — настраиваемые атрибуты для каждого элемента управления предоставляются через Appearance статическое свойство.Set defaults on the Appearance static property – customizable attributes for each control are exposed via the Appearance static property. Все настройки, применяемых для этих свойств будет использоваться по умолчанию для любого элемента управления этого типа, созданный после свойству.Any customizations you apply to these properties will be used as the default for any control of that type that is created after the property is set.

Внешний вид пример приложения демонстрирует все три метода, как показано на эти снимки экрана:The Appearance sample application demonstrates all three methods, as shown in these screenshots:

Начиная с версии iOS 8 внешний вид прокси-сервера была расширена для TraitCollections.As of iOS 8, the Appearance proxy has been extended to TraitCollections. AppearanceForTraitCollection можно задать внешний вид по умолчанию в коллекции конкретного признака.AppearanceForTraitCollection can be used to set the default appearance on a particular trait collection. Дополнительные сведения см. в введение в раскадровки руководства.You can read more about this in the Introduction to Storyboards guide.

Задание свойств внешнего видаSetting Appearance Properties

На первом экране статический класс внешний вид используется для стиля кнопки и желтый/оранжевый следующим образом:In the first screen, the static Appearance class is used to style the buttons and yellow/orange elements like this:

// 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 метод, который переопределяет значения по умолчанию и внешний вид статический класс:The green element styles are set like this, in the ViewDidLoad method which overrides the default values and the Appearance static class:

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.FormsUsing UIAppearance in Xamarin.Forms

API внешнего вида могут быть полезны, при Задание стиля приложений iOS в решения Xamarin.Forms.The Appearance API can be useful when styling the iOS app in Xamarin.Forms solutions. Несколько строк в AppDelegate класс может помочь в реализации конкретных цветовую схему без создания пользовательское средство отрисовки.A few lines in the AppDelegate class can help to implement a specific color scheme without having to create a custom renderer.

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

iOS позволяет многие визуальные атрибуты пользователя, элементы управления интерфейса можно будет «темы» с помощью UIAppearance API-интерфейсы для принудительного все экземпляры конкретного элемента управления, чтобы выглядеть одинаково.iOS allows many visual attributes of the user interface controls to be “themed” using the UIAppearance APIs to force all instances of a particular control to have the same appearance. Он предоставляется как свойство внешнего вида на многие классы элементов управления интерфейса пользователя, а не для отдельных экземпляров элемента управления.This is exposed as an Appearance property on many user interface control classes, not on individual instances of the control. Задание статического свойства отображения Appearance свойство влияет на все элементы управления этого типа в приложении.Setting a display property on the static Appearance property affects all controls of that type in your application.

Чтобы лучше понять принцип, рассмотрим пример.To better understand the concept, consider an example.

Чтобы изменить конкретный UISegmentedControl чтобы пурпурного оттенок, мы ссылку определенный элемент управления на экран в наших ViewDidLoad:To change a specific UISegmentedControl to have a Magenta tint, we would reference the specific control on our screen like this in ViewDidLoad:

sg1.TintColor = UIColor.Magenta;

Кроме того задайте значение в панели свойств конструктора:Alternatively, set the value in the Properties pad of the Designer:

На следующем рисунке показано, что это задает оттенок только с именем «sg1» элемента управления.The image below illustrates that this sets the tint on only the control named 'sg1'.

Чтобы задать множество элементов управления таким образом будет полностью неэффективно, поэтому вместо него статический Appearance свойство в самом классе.To set many controls in this way would be completely inefficient, so we can instead set the static Appearance property on the class itself. Это показано в следующем коде:This is shown in the code below:

UISegmentedControl.Appearance.TintColor = UIColor.Magenta;

Теперь на следующем рисунке показаны оба Сегментированные элементы управления с внешним видом, равным пурпурный:The Image below now illustrates both segmented controls with the appearance set to Magenta:

Appearance свойства должны задаваться на ранних этапах жизненного цикла приложения, такие как в AppDelegate FinishedLaunching событий, или в ViewController, прежде чем будут отображаться соответствующие элементы управления.Appearance properties should be set early in the application lifecycle, such as in the AppDelegate’s FinishedLaunching event, or in a ViewController before the affected controls are displayed.

Ссылаться на Знакомство с API внешнего вида более подробные сведения.Refer to the Introduction to the Appearance API for more detailed information.