From 68652b9f10416d5fc8a58f07a04cd5eb740e3415 Mon Sep 17 00:00:00 2001 From: Andrei Nitescu Date: Thu, 14 Mar 2019 13:18:00 +0200 Subject: [PATCH] iOS: Color of Editor Placeholder is different than Entry (#5259) fixes #5252 --- .../Issue5252.cs | 49 ++++++++++++++++++++++ .../Xamarin.Forms.Controls.Issues.Shared.projitems | 1 + .../Renderers/EditorRenderer.cs | 10 +++-- 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue5252.cs diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue5252.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue5252.cs new file mode 100644 index 0000000..0db2a2f --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue5252.cs @@ -0,0 +1,49 @@ +using System.Linq; +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Github, 5252, "iOS: The Editor and Entry placeholder default color should be the same", PlatformAffected.iOS)] + + class Issue5252 : TestContentPage + { + protected override void Init() + { + var sl = new StackLayout(); + sl.Children.Add(new Label() + { + Text = "iOS: The Editor and Entry placeholder default color should be the same for consistency" + }); + + var entry = new Entry() + { + Placeholder = "Entry placeholder", + }; + sl.Children.Add(entry); + + var editor = new Editor() + { + Placeholder = "Editor placeholder", + }; + sl.Children.Add(editor); + + sl.Children.Add(new Button() + { + Text = "Toggle placeholder color", + Command = new Command(() => + { + entry.PlaceholderColor = entry.PlaceholderColor.IsDefault ? Color.Red : (Color)Entry.PlaceholderColorProperty.DefaultValue; + editor.PlaceholderColor = editor.PlaceholderColor.IsDefault ? Color.Red : (Color)Editor.PlaceholderColorProperty.DefaultValue; + }) + }); + + + Content = new ScrollView() + { + Content = sl + }; + } + } +} diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index 5d47b22..667b86a 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -430,6 +430,7 @@ Code + Issue5057.xaml Code diff --git a/Xamarin.Forms.Platform.iOS/Renderers/EditorRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/EditorRenderer.cs index e14d888..de56672 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/EditorRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/EditorRenderer.cs @@ -9,6 +9,9 @@ namespace Xamarin.Forms.Platform.iOS { public class EditorRenderer : EditorRendererBase { + // Using same placeholder color as for the Entry + readonly UIColor _defaultPlaceholderColor = ColorExtensions.SeventyPercentGrey; + UILabel _placeholderLabel; public EditorRenderer() @@ -63,10 +66,11 @@ namespace Xamarin.Forms.Platform.iOS protected internal override void UpdatePlaceholderColor() { - if (Element.PlaceholderColor == Color.Default) - _placeholderLabel.TextColor = UIColor.DarkGray; + Color placeholderColor = Element.PlaceholderColor; + if (placeholderColor.IsDefault) + _placeholderLabel.TextColor = _defaultPlaceholderColor; else - _placeholderLabel.TextColor = Element.PlaceholderColor.ToUIColor(); + _placeholderLabel.TextColor = placeholderColor.ToUIColor(); } void CreatePlaceholderLabel() -- 2.7.4