Modo de Cor Herdado do VisualElement no iOS

Baixar exemplo Baixar o exemplo

Alguns dos modos Xamarin.Forms de exibição apresentam um modo de cor herdado. Nesse modo, quando a IsEnabled propriedade do modo de exibição for definida falsecomo , o modo de exibição substituirá as cores definidas pelo usuário com as cores nativas padrão para o estado desabilitado. Para compatibilidade com versões anteriores, esse modo de cor herdado continua sendo o comportamento padrão para exibições com suporte.

Essa plataforma específica do iOS desabilita esse modo de cor herdado em um VisualElement, para que as cores definidas em um modo de exibição pelo usuário permaneçam mesmo quando a exibição estiver desabilitada. Ele é consumido em XAML definindo a VisualElement.IsLegacyColorModeEnabled propriedade falseanexada como :

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

Como alternativa, ele pode ser consumido do C# usando a API fluente:

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

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

O VisualElement.On<iOS> método especifica que esse específico da plataforma só será executado no iOS. O VisualElement.SetIsLegacyColorModeEnabled método, no Xamarin.Forms.PlatformConfiguration.iOSSpecific namespace , é usado para controlar se o modo de cor herdado está desabilitado. Além disso, o VisualElement.GetIsLegacyColorModeEnabled método pode ser usado para retornar se o modo de cor herdado está desabilitado.

O resultado é que o modo de cor herdado pode ser desabilitado, para que as cores definidas em um modo de exibição pelo usuário permaneçam mesmo quando a exibição estiver desabilitada:

Modo de cor herdado desabilitado

Observação

Ao definir um VisualStateGroup em um modo de exibição, o modo de cor herdado é completamente ignorado. Para obter mais informações sobre estados visuais, consulte O Xamarin.Forms Gerenciador de Estado Visual.