Darstellungs-API in Xamarin.iOS

Mit iOS können Sie visuelle Eigenschafteneinstellungen auf statischer Klassenebene und nicht auf einzelne Objekte anwenden, sodass die Änderung für alle Instanzen dieses Steuerelements in der Anwendung gilt.

Diese Funktionalität wird in Xamarin.iOS über eine statische Appearance Eigenschaft für alle UIKit-Steuerelemente verfügbar gemacht, die sie unterstützen. Die visuelle Darstellung (Eigenschaften wie Farbtonfarbe und Hintergrundbild) kann daher einfach angepasst werden, um Ihrer Anwendung ein einheitliches Aussehen zu verleihen. Die Darstellungs-API wurde in iOS 5 eingeführt und obwohl einige Teile davon in iOS 9 veraltet sind, ist sie immer noch eine gute Möglichkeit, um einige Stil- und Themeneffekte in Xamarin.iOS-Apps zu erzielen.

Übersicht

Mit iOS können Sie die Darstellung vieler UIKit-Steuerelemente anpassen, damit die Standardsteuerelemente dem Branding entsprechen, das Sie auf Ihre Anwendung anwenden möchten.

Es gibt zwei verschiedene Möglichkeiten, eine benutzerdefinierte Darstellung anzuwenden:

  • Direkt in einem Steuerelement instance : Sie können die Farbtonfarbe, das Hintergrundbild und die Titelposition (sowie einige andere Attribute) für viele Steuerelemente festlegen, einschließlich Symbolleisten, Navigationsleisten, Schaltflächen und Schiebereglern.

  • Legen Sie Standardwerte für die statische Eigenschaft Appearance fest: Anpassbare Attribute für jedes Steuerelement werden über die Appearance statische Eigenschaft verfügbar gemacht. Alle Anpassungen, die Sie auf diese Eigenschaften anwenden, werden als Standard für jedes Steuerelement dieses Typs verwendet, das nach dem Festlegen der Eigenschaft erstellt wird.

Die Beispielanwendung "Appearance" veranschaulicht alle drei Methoden, wie in den folgenden Screenshots gezeigt:

Die Beispielanwendung

Ab iOS 8 wurde der Darstellungsproxy auf TraitCollections erweitert. AppearanceForTraitCollection kann verwendet werden, um die Standarddarstellung für eine bestimmte Traitauflistung festzulegen. Weitere Informationen hierzu finden Sie im Leitfaden Einführung in Storyboards .

Festlegen von Darstellungseigenschaften

Auf dem ersten Bildschirm wird die statische Darstellungsklasse verwendet, um die Schaltflächen und gelb/orangen Elemente wie folgt zu formatieren:

// 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;

Die Formatvorlagen für grüne Elemente werden wie folgt in der ViewDidLoad -Methode festgelegt, die die Standardwerte und die statische Klasse "Appearance " außer Kraft setzt:

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);

Verwenden von UIAppearance in Xamarin.Forms

Die Darstellungs-API kann beim Formatieren der iOS-App in Xamarin.Forms-Lösungen hilfreich sein. Einige Zeilen in der AppDelegate Klasse können helfen, ein bestimmtes Farbschema zu implementieren, ohne einen benutzerdefinierten Renderer erstellen zu müssen.

Benutzerdefinierte Designs und UIAppearance

iOS ermöglicht es, dass viele visuelle Attribute der Benutzeroberflächensteuerelemente mithilfe der UIAppearance-APIs "thematisch" werden, um zu erzwingen, dass alle Instanzen eines bestimmten Steuerelements die gleiche Darstellung haben. Dies wird als Appearance-Eigenschaft für viele Steuerelementklassen der Benutzeroberfläche verfügbar gemacht, nicht für einzelne Instanzen des Steuerelements. Das Festlegen einer Anzeigeeigenschaft für die statische Appearance Eigenschaft wirkt sich auf alle Steuerelemente dieses Typs in Ihrer Anwendung aus.

Um das Konzept besser zu verstehen, betrachten Sie ein Beispiel.

Um ein bestimmtes UISegmentedControl zu ändern, um eine Magenta-Tönung zu erhalten, verweisen wir auf das bestimmte Steuerelement auf unserem Bildschirm wie folgt in ViewDidLoad:

sg1.TintColor = UIColor.Magenta;

Legen Sie alternativ den Wert im Eigenschaftenpad des Designer fest:

Eigenschaften Pad-Farbton

Die folgende Abbildung zeigt, dass dadurch nur der Farbton für das Steuerelement mit dem Namen "sg1" festgelegt wird.

Festlegen des individuellen Steuerelementtons

Viele Steuerelemente auf diese Weise festzulegen, wäre völlig ineffizient, sodass wir stattdessen die statische Appearance Eigenschaft für die Klasse selbst festlegen können. Dies wird im folgenden Code gezeigt:

UISegmentedControl.Appearance.TintColor = UIColor.Magenta;

Die folgende Abbildung veranschaulicht nun beide segmentierten Steuerelemente, wobei die Darstellung auf Magenta festgelegt ist:

Festlegen der Farbtonfarbe des Steuerelements

Appearance Eigenschaften sollten frühzeitig im Anwendungslebenszyklus festgelegt werden, z. B. im AppDelegate-Ereignis FinishedLaunching oder in einem ViewController, bevor die betroffenen Steuerelemente angezeigt werden.

Ausführlichere Informationen finden Sie in der Einführung in die Darstellungs-API .