Úvod do efektů
Efekty umožňují přizpůsobení nativních ovládacích prvků na jednotlivých platformách a obvykle se používají pro malé změny stylů. Tento článek obsahuje úvod k efektům, popisuje hranice mezi efekty a vlastní renderery a popisuje platformEffect třída.
Xamarin.FormsStránky, rozložení a ovládací prvky představují společné rozhraní API pro popis mobilních uživatelských rozhraní pro různé platformy. Každá stránka, rozložení a ovládací prvek se na každé platformě vykresluje odlišně pomocí Renderer
třídy, která zase vytvoří nativní ovládací prvek (odpovídající Xamarin.Forms reprezentaci), uspořádá ho na obrazovce a přidá chování zadané ve sdíleném kódu.
Vývojáři mohou implementovat vlastní třídy Renderer
a přizpůsobit tak vzhled a chování ovládacího prvku. Implementace vlastní třídy rendereru pro provedení jednoduchého přizpůsobení ovládacího prvku je často velmi náročné odezvy. Efekty zjednodušují tento proces, což umožňuje snadnější přizpůsobení nativních ovládacích prvků na jednotlivých platformách.
Efekty se vytvářejí v projektech specifických pro platformu podtřídou PlatformEffect
ovládacího prvku a pak se efekty využívají jejich připojením k příslušnému Xamarin.Forms ovládacímu prvku v knihovně .NET Standard nebo projektu sdílené knihovny.
Proč použít efekt u vlastního rendereru?
Efekty zjednodušují přizpůsobení ovládacího prvku, jsou opakovaně použitelné a lze je parametrizovat, aby se dále zvýšilo opakované použití.
Cokoli, čeho lze dosáhnout efektem, lze dosáhnout také pomocí vlastního vykreslovacího modulu. Vlastní renderery ale nabízejí větší flexibilitu a přizpůsobení než efekty. V následujících pokynech jsou uvedeny okolnosti, za kterých se má efekt zvolit u vlastního rendereru:
- Při změně vlastností ovládacího prvku specifického pro platformu se doporučuje dosáhnout požadovaného výsledku.
- Vlastní renderer se vyžaduje, když je potřeba přepsat metody ovládacího prvku specifického pro platformu.
- Vlastní renderer se vyžaduje, pokud je potřeba nahradit ovládací prvek specifický pro platformu Xamarin.Forms , který implementuje ovládací prvek.
Podtřídy třídy PlatformEffect
Následující tabulka uvádí obor názvů pro PlatformEffect
třídu na každé platformě a typy jeho vlastností:
Platforma | Obor názvů | Kontejner | Ovládací prvek |
---|---|---|---|
iOS | Xamarin.Forms. Platform.iOS | UiView | UiView |
Android | Xamarin.Forms. Platform.Android | ViewGroup | Zobrazení |
Univerzální platforma Windows (UPW) | Xamarin.Forms. Platform.UWP | FrameworkElement | FrameworkElement |
Každá třída specifická pro PlatformEffect
platformu zveřejňuje následující vlastnosti:
Container
– odkazuje na ovládací prvek specifický pro platformu, který se používá k implementaci rozložení.Control
– odkazuje na ovládací prvek specifický pro platformu, který se používá k implementaci Xamarin.Forms ovládacího prvku.Element
– odkazuje na Xamarin.Forms vykreslovaný ovládací prvek.
Efekty nemají informace o typu kontejneru, ovládacího prvku nebo prvku, ke kterým jsou připojeny, protože mohou být připojeny k libovolnému prvku. Proto, pokud je efekt připojen k prvku, který nepodporuje, by měl degradovat elegantně nebo vyvolat výjimku. Však , Container
Control
a Element
vlastnosti lze přetypovat na jejich implementovaný typ. Další informace o těchtotypech
Každá třída specifická pro PlatformEffect
platformu zveřejňuje následující metody, které musí být přepsány pro implementaci efektu:
OnAttached
– volá se, když je efekt připojen k ovládacímu Xamarin.Forms prvku. Přepsáná verze této metody, v každé třídě efektu specifické pro platformu, je místo k provedení přizpůsobení ovládacího prvku spolu s ošetřením výjimek v případě, že efekt nelze použít na zadaný Xamarin.Forms ovládací prvek.OnDetached
– volá se při odpojení efektu Xamarin.Forms od ovládacího prvku. Přepsaná verze této metody, v každé třídě efektu specifické pro platformu, je místo, kde lze provést vyčištění efektu, jako je zrušení registrace obslužné rutiny události.
Kromě toho PlatformEffect
zveřejňuje metodu OnElementPropertyChanged
, která může být také přepsána. Tato metoda je volána při změně vlastnosti elementu. Přepsáná verze této metody, v každé třídě efektu specifické pro platformu, je místo, kde reagovat na změny vazebných vlastností Xamarin.Forms ovládacího prvku. Kontrola změněné vlastnosti by měla být vždy provedena, protože toto přepsání lze volat mnohokrát.