Sdílet prostřednictvím


Starší barevný režim VisualElement v iOSu

Některá zobrazení Xamarin.Forms mají starší režim barev. V tomto režimu, když IsEnabled je vlastnost zobrazení nastavena na false, zobrazení přepíše barvy nastavené uživatelem s výchozími nativními barvami pro zakázaný stav. Kvůli zpětné kompatibilitě zůstává tento starší barevný režim výchozím chováním podporovaných zobrazení.

Tento specifický pro platformu iOS zakáže tento starší barevný režim na zařízení VisualElement, aby barvy nastavené v zobrazení uživatelem zůstaly i v případě, že je zobrazení zakázané. Využívá se v XAML nastavením VisualElement.IsLegacyColorModeEnabled připojené vlastnosti na false:

<ContentPage ...
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout>
        ...
        <Button Text="Button"
                TextColor="Blue"
                BackgroundColor="Bisque"
                ios:VisualElement.IsLegacyColorModeEnabled="False" />
        ...
    </StackLayout>
</ContentPage>

Alternativně ho můžete využívat z jazyka C# pomocí rozhraní FLUENT API:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...

_legacyColorModeDisabledButton.On<iOS>().SetIsLegacyColorModeEnabled(false);

Metoda VisualElement.On<iOS> určuje, že se tato platforma bude spouštět pouze v iOSu. Metoda VisualElement.SetIsLegacyColorModeEnabled v Xamarin.Forms.PlatformConfiguration.iOSSpecific oboru názvů slouží k řízení, zda je starší barevný režim zakázán. Kromě toho lze metodu VisualElement.GetIsLegacyColorModeEnabled použít k vrácení, zda je starší barevný režim zakázán.

Výsledkem je, že starší režim barev je možné zakázat, takže barvy nastavené v zobrazení uživatelem zůstanou i v případě, že je zobrazení zakázané:

Zastaralý barevný režim je zakázaný.

Poznámka:

Při nastavování VisualStateGroup zobrazení je starší barevný režim zcela ignorován. Další informace o stavech vizuálů naleznete v tématu Správce stavu vizuáluXamarin.Forms.