Share via


API aspetto in Xamarin.iOS

iOS consente di applicare le impostazioni delle proprietà visive a livello di classe statica anziché a singoli oggetti in modo che la modifica venga applicata a tutte le istanze di tale controllo nell'applicazione.

Questa funzionalità viene esposta in Xamarin.iOS tramite una proprietà statica Appearance in tutti i controlli UIKit che lo supportano. L'aspetto visivo (proprietà come il colore della tinta e l'immagine di sfondo) può quindi essere facilmente personalizzato per offrire all'applicazione un aspetto coerente. L'API Aspetto è stata introdotta in iOS 5 e, mentre alcune parti di esso sono state deprecate in iOS 9, è ancora un buon modo per ottenere alcuni stili e effetti di tema nelle app Xamarin.iOS.

Panoramica

iOS consente di personalizzare l'aspetto di molti controlli UIKit per rendere i controlli standard conformi alla personalizzazione da applicare all'applicazione.

Esistono due modi diversi per applicare un aspetto personalizzato:

  • Direttamente in un'istanza del controllo: è possibile impostare il colore della tinta, l'immagine di sfondo e la posizione del titolo (oltre ad altri attributi) in molti controlli, tra cui barre degli strumenti, barre di spostamento, pulsanti e dispositivi di scorrimento.

  • Impostare le impostazioni predefinite nella proprietà statica Aspetto: gli attributi personalizzabili per ogni controllo vengono esposti tramite la Appearance proprietà statica. Tutte le personalizzazioni applicate a queste proprietà verranno usate come impostazione predefinita per qualsiasi controllo di quel tipo creato dopo l'impostazione della proprietà.

L'applicazione di esempio Aspetto illustra tutti e tre i metodi, come illustrato negli screenshot seguenti:

L'applicazione di esempio Aspetto illustra tutti e tre i metodi

A partire da iOS 8, il proxy aspetto è stato esteso a TraitCollections. AppearanceForTraitCollection può essere utilizzato per impostare l'aspetto predefinito in una particolare raccolta di tratti. Per altre informazioni, vedere la guida Introduzione agli storyboard .

Impostazione delle proprietà aspetto

Nella prima schermata, la classe Aspetto statica viene usata per applicare stili ai pulsanti e agli elementi giallo/arancione come segue:

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

Gli stili degli elementi verdi vengono impostati come segue, nel metodo che esegue l'override ViewDidLoad dei valori predefiniti e della classe statica Appearance :

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

Uso di UIAppearance in Xamarin.Forms

L'API Aspetto può essere utile quando si applica lo stile all'app iOS nelle soluzioni Xamarin.Forms. Alcune righe della AppDelegate classe possono essere utili per implementare una combinazione di colori specifica senza dover creare un renderer personalizzato.

Temi personalizzati e UIAppearance

iOS consente a molti attributi visivi dei controlli dell'interfaccia utente di essere "a tema" usando le API UIAppearance per forzare l'aspetto di tutte le istanze di un determinato controllo. Questa operazione viene esposta come proprietà Appearance in molte classi di controllo dell'interfaccia utente, non nelle singole istanze del controllo. L'impostazione di una proprietà di visualizzazione nella proprietà statica Appearance influisce su tutti i controlli di quel tipo nell'applicazione.

Per comprendere meglio il concetto, si consideri un esempio.

Per modificare un oggetto specifico UISegmentedControl per avere una tinta Magenta, faremo riferimento al controllo specifico sullo schermo come segue in ViewDidLoad:

sg1.TintColor = UIColor.Magenta;

In alternativa, impostare il valore nel riquadro Proprietà della finestra di progettazione:

Tinta riquadro proprietà

L'immagine seguente illustra che imposta la tinta solo sul controllo denominato 'sg1'.

Impostazione della tinta del singolo controllo

Per impostare molti controlli in questo modo sarebbe completamente inefficiente, quindi è possibile impostare la proprietà statica Appearance sulla classe stessa. Questo è illustrato nel codice seguente:

UISegmentedControl.Appearance.TintColor = UIColor.Magenta;

L'immagine seguente illustra ora entrambi i controlli segmentati con l'aspetto impostato su Magenta:

Impostazione della tinta del controllo Aspetto

Appearance Le proprietà devono essere impostate all'inizio del ciclo di vita dell'applicazione, ad esempio nell'evento di FinishedLaunching AppDelegate o in un ViewController prima che vengano visualizzati i controlli interessati.

Per informazioni più dettagliate, vedere Introduzione all'API Aspetto.