Xamarin.Forms: отключенная запись имеет белый TextColor, когда Dark Mode включен на iOS - PullRequest
5 голосов
/ 20 февраля 2020

Кажется, у меня есть некоторые проблемы с TextColor моей записи на iOS, когда включен темный режим. Всякий раз, когда я устанавливаю состояние Enabled для Entry в false, TextColor становится белым, и его невозможно изменить. Я использовал следующий простой код, чтобы воспроизвести это.

Page.xaml

    <Entry x:Name="TestEntry" />
Page.xaml.cs

    public OnboardingPage()
    {
        InitializeComponent();

        TestEntry.Text = "Testo";
        TestEntry.TextColor = Color.Blue;
        TestEntry.IsEnabled = false;
    }

В настоящее время я использую последнюю версию Xamarin.Forms. (4.4.0.991640)

Кто-нибудь знает, что здесь происходит не так? Я не думаю, что это ожидаемое поведение ..

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 20 февраля 2020

Тем временем я нашел исправление, необходимое для моего вопроса.

Очевидно, что EntryRenderer на iOS использует цвет по умолчанию, когда унаследованное управление цветом включено и запись отключена. Установка для LegacyColorManagement значения False на входе решает эту проблему.

XF-проверка для legacycolormanagement https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Platform.iOS/Extensions/VisualElementExtensions.cs#L15

XF-проверка TextColor https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Platform.iOS/Renderers/EntryRenderer.cs#L272

Я добавил следующий код в мой * Page.xaml, и теперь цвета отображаются правильно:

*Page.xaml

<ContentPage xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
             ...>

<Entry ios:VisualElement.IsLegacyColorModeEnabled="False"
       .../>

1 голос
/ 20 февраля 2020

Причина, по которой это происходит из-за того, как iOS работает с темным режимом, чтобы вы могли справиться с этим, вы должны добавить следующее в Info.Plist

<key>UIUserInterfaceStyle</key>
<string>Light</string>

Что это будет делать, это остановить ваше приложение ничего не меняет, когда включен темный режим, т.е. это своего рода отказ

Goodluck

Не стесняйтесь вернуться, если у вас есть вопросы

...