Sdílet prostřednictvím


Ú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 , ContainerControla 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.