Rozhraní API pro vzhled v Xamarin.iOS

iOS umožňuje použít nastavení vizuálních vlastností na statické úrovni třídy, nikoli na jednotlivé objekty, aby změna platila pro všechny instance tohoto ovládacího prvku v aplikaci.

Tato funkce je zpřístupněna v Xamarin.iOS prostřednictvím statické Appearance vlastnosti na všech ovládacích prvcích UIKit, které ji podporují. Vzhled vizuálu (vlastnosti jako barevný nádech a obrázek pozadí) je proto možné snadno přizpůsobit, aby vaše aplikace měla konzistentní vzhled. Rozhraní API pro vzhled bylo zavedeno v iOSu 5 a zatímco některé jeho části jsou v iOSu 9 zastaralé, je stále dobrým způsobem, jak dosáhnout některých stylů a efektů motivů v aplikacích Xamarin.iOS.

Přehled

iOS umožňuje přizpůsobit vzhled mnoha ovládacích prvků UIKit, aby standardní ovládací prvky odpovídaly značce, kterou chcete použít pro vaši aplikaci.

Existují dva různé způsoby použití vlastního vzhledu:

  • Přímo na instanci ovládacího prvku – na mnoha ovládacích prvcích, včetně panelů nástrojů, navigačních panelů, tlačítek a posuvníků, můžete nastavit barvu pozadí, obrázek pozadí a pozici nadpisu (a také některé další atributy).

  • Nastavte výchozí hodnoty pro statickou vlastnost Vzhled – přizpůsobitelné atributy pro každý ovládací prvek jsou vystaveny prostřednictvím Appearance statické vlastnosti. Všechna vlastní nastavení, která použijete na tyto vlastnosti, se použijí jako výchozí pro jakýkoli ovládací prvek tohoto typu, který je vytvořen po nastavení vlastnosti.

Ukázková aplikace Vzhled ukazuje všechny tři metody, jak je znázorněno na těchto snímcích obrazovky:

Ukázková aplikace Vzhled demonstruje všechny tři metody.

Od iOSu 8 byl proxy vzhled rozšířen na TraitCollections. AppearanceForTraitCollection lze použít k nastavení výchozího vzhledu konkrétní kolekce vlastností. Další informace najdete v průvodci Úvodem do scénářů .

Nastavení vlastností vzhledu

Na první obrazovce se statická třída Vzhled používá ke stylu tlačítek a žlutých/oranžových prvků, jako je tento:

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

Styly zeleného prvku jsou nastaveny takto, v ViewDidLoad metodě, která přepíše výchozí hodnoty a Vzhled statické třídy:

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

Použití uiAppearance v Xamarin.Forms

Rozhraní API pro vzhled může být užitečné při vytváření stylu aplikace pro iOS v řešeních Xamarin.Forms. Několik řádků ve AppDelegate třídě může pomoct implementovat konkrétní barevné schéma, aniž by bylo nutné vytvořit vlastní renderer.

Vlastní motivy a aplikace UIAppearance

iOS umožňuje, aby mnoho vizuálních atributů ovládacích prvků uživatelského rozhraní bylo "motivováno" pomocí rozhraní API UIAppearance , aby všechny instance určitého ovládacího prvku měly stejný vzhled. Tato vlastnost je vystavena jako vzhled vlastnosti u mnoha tříd ovládacích prvků uživatelského rozhraní, nikoli u jednotlivých instancí ovládacího prvku. Nastavení vlastnosti zobrazení statické Appearance vlastnosti ovlivní všechny ovládací prvky tohoto typu v aplikaci.

Pokud chcete lépe porozumět konceptu, zvažte příklad.

Pokud chcete změnit konkrétní UISegmentedControl odstín purpurové barvy, odkazovali bychom na konkrétní ovládací prvek na naší obrazovce takto ViewDidLoad:

sg1.TintColor = UIColor.Magenta;

Případně nastavte hodnotu v oblasti Vlastnosti Návrháře:

Barevný nádech panelu vlastností

Následující obrázek znázorňuje, že se tím nastaví barevný nádech jenom na ovládacím prvku s názvem sg1.

Nastavení odstínu jednotlivého ovládacího prvku

Nastavení mnoha ovládacích prvků tímto způsobem by bylo zcela neefektivní, takže můžeme místo toho nastavit statickou Appearance vlastnost u samotné třídy. Toto je znázorněno v následujícím kódu:

UISegmentedControl.Appearance.TintColor = UIColor.Magenta;

Následující obrázek teď znázorňuje oba segmentované ovládací prvky se vzhledem nastaveným na Purpurovou:

Nastavení nádechu ovládacího prvku Vzhled

Appearance vlastnosti by měly být nastaveny v rané fázi životního cyklu aplikace, například v události AppDelegate FinishedLaunching , nebo v ViewController před zobrazením ovlivněných ovládacích prvků.

Podrobnější informace najdete v úvodu k rozhraní API pro vzhled.