Xamarin.Forms:在 iOS 上启用深色模式时,禁用的条目具有白色 TextColor
Xamarin.Forms: Disabled entry has white TextColor when Dark Mode is enabled on iOS
当启用深色模式时,我在 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)
有人知道这里出了什么问题吗?我不认为这是预期的行为..
提前致谢!
发生这种情况的原因是 iOS 如何与黑暗模式一起工作,您必须在 Info.Plist
中添加以下内容
<key>UIUserInterfaceStyle</key>
<string>Light</string>
这会阻止您的应用在深色模式打开时更改任何内容,即它是一种选择退出
祝你好运
如果您有任何问题,请随时回来
与此同时,我找到了解决我的问题所必需的方法。
显然,iOS 上的 EntryRenderer 在启用旧颜色管理且禁用条目时使用默认颜色。在条目上将 legacyColorManagement 设置为 False 可解决此问题。
XF 检查 legacy colormanagement
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"
.../>
当启用深色模式时,我在 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)
有人知道这里出了什么问题吗?我不认为这是预期的行为..
提前致谢!
发生这种情况的原因是 iOS 如何与黑暗模式一起工作,您必须在 Info.Plist
<key>UIUserInterfaceStyle</key>
<string>Light</string>
这会阻止您的应用在深色模式打开时更改任何内容,即它是一种选择退出
祝你好运
如果您有任何问题,请随时回来
与此同时,我找到了解决我的问题所必需的方法。
显然,iOS 上的 EntryRenderer 在启用旧颜色管理且禁用条目时使用默认颜色。在条目上将 legacyColorManagement 设置为 False 可解决此问题。
XF 检查 legacy colormanagement 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"
.../>