7

启用深色模式后,我在 iOS 上的条目的 TextColor 似乎有些问题。每当我将 Entry 的 Enabled 状态设置为 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)

有人知道这里出了什么问题吗?我不认为这是预期的行为..

提前致谢!

4

2 回答 2

5

与此同时,我找到了解决我的问题所必需的方法。

显然,iOS 上的 EntryRenderer 在启用旧版颜色管理并禁用 Entry 时使用默认颜色。在 Entry 上将 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"
       .../>

于 2020-02-20T13:01:30.613 回答
1

发生这种情况的原因是因为 iOS 如何使用暗模式为您处理此问题,您必须在您的Info.Plist

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

这将做的是阻止您的应用程序在打开暗模式时更改任何内容,即它是一种选择退出

祝你好运

如果您有任何问题,请随时回复

于 2020-02-20T12:10:42.497 回答