diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2016-04-19 01:01:58 -0600 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-04-19 00:01:58 -0700 |
commit | a98f3fb2aae3c5b6a3fa5140e51f51ec67843a49 (patch) | |
tree | 654fa47cbd3cc889061466939630dcd5133cc837 /Xamarin.Forms.Platform.iOS | |
parent | 89a50d4bc1f4aaf83d5f92a28c2a7a96282cc0d3 (diff) | |
download | xamarin-forms-a98f3fb2aae3c5b6a3fa5140e51f51ec67843a49.tar.gz xamarin-forms-a98f3fb2aae3c5b6a3fa5140e51f51ec67843a49.tar.bz2 xamarin-forms-a98f3fb2aae3c5b6a3fa5140e51f51ec67843a49.zip |
Add TextColor Property to Picker, TimePicker, DatePicker (#84)
* Add TextColor property to TimePicker
Add TextColor page to TimePicker gallery
Add TimePicker color toggling to color toggle test page
Split color toggle tests up among tabs
* Implement TimePicker.TextColor in iOS
* Implement TimePicker.TextColor for WinRT tablet
* Add IsEnabled=false tests to DefaultColorToggleTest Button and TimePicker
Consolidate ColorStates array
Fix IsEnabled changing color bug on iOS
* Implement TimePicker.TextColor for WP8
* Add TextColor property to DatePicker
Add DatePicker section to DefaultColorToggleTest
Impement DatePicker.TextColor for WP8
* Implement DatePicker.TextColor for WinRT/UWP/Windows Phone 8.1
* Implement DatePicker.TextColor for iOS
* Add TextColor to DatePicker Gallery Page
* Implement DatePicker.TextColor for Android
* Add Picker Gallery page for TextColor
Implement Picker.TextColor on Android
Consolidate TextColor management for Button, Picker, DatePicker, TimePicker
Implement
* Add untracked TextColorSwitcher
Implement Picker.TextColor in iOS
* Implement Picker.TextColor in WinRT/UWP/Windows Phone 8.1
Remove Pioker Loaded handlers in Dispose
* Implement Picker.TextColor in WP8
* Removed unused field
Update ignored warnings
* Update docs
* Use nameof() for BindableProperties
* Cleanup
* Fix custom renderer crashes for classes using TextColorSwitcher
* Correct property name references
* Fix typo and 'if' formatting
* Add missing else
Diffstat (limited to 'Xamarin.Forms.Platform.iOS')
3 files changed, 49 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs index fd2b1549..6d70d7c5 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/DatePickerRenderer.cs @@ -36,6 +36,7 @@ namespace Xamarin.Forms.Platform.iOS public class DatePickerRenderer : ViewRenderer<DatePicker, UITextField> { UIDatePicker _picker; + UIColor _defaultTextColor; protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e) { @@ -62,6 +63,8 @@ namespace Xamarin.Forms.Platform.iOS entry.InputView = _picker; entry.InputAccessoryView = toolbar; + _defaultTextColor = entry.TextColor; + SetNativeControl(entry); } @@ -70,6 +73,7 @@ namespace Xamarin.Forms.Platform.iOS UpdateDateFromModel(false); UpdateMaximumDate(); UpdateMinimumDate(); + UpdateTextColor(); } } @@ -83,6 +87,8 @@ namespace Xamarin.Forms.Platform.iOS UpdateMinimumDate(); else if (e.PropertyName == DatePicker.MaximumDateProperty.PropertyName) UpdateMaximumDate(); + else if (e.PropertyName == DatePicker.TextColorProperty.PropertyName || e.PropertyName == VisualElement.IsEnabledProperty.PropertyName) + UpdateTextColor(); } void HandleValueChanged(object sender, EventArgs e) @@ -118,5 +124,15 @@ namespace Xamarin.Forms.Platform.iOS { _picker.MinimumDate = Element.MinimumDate.ToNSDate(); } + + void UpdateTextColor() + { + var textColor = Element.TextColor; + + if (textColor.IsDefault || !Element.IsEnabled) + Control.TextColor = _defaultTextColor; + else + Control.TextColor = textColor.ToUIColor(); + } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.iOS/Renderers/PickerRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/PickerRenderer.cs index e47d2fa4..7b5461e2 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/PickerRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/PickerRenderer.cs @@ -22,6 +22,7 @@ namespace Xamarin.Forms.Platform.iOS public class PickerRenderer : ViewRenderer<Picker, UITextField> { UIPickerView _picker; + UIColor _defaultTextColor; protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) { @@ -56,12 +57,15 @@ namespace Xamarin.Forms.Platform.iOS entry.InputView = _picker; entry.InputAccessoryView = toolbar; + _defaultTextColor = entry.TextColor; + SetNativeControl(entry); } _picker.Model = new PickerSource(this); UpdatePicker(); + UpdateTextColor(); ((ObservableList<string>)e.NewElement.Items).CollectionChanged += RowsCollectionChanged; } @@ -76,6 +80,8 @@ namespace Xamarin.Forms.Platform.iOS UpdatePicker(); if (e.PropertyName == Picker.SelectedIndexProperty.PropertyName) UpdatePicker(); + if (e.PropertyName == Picker.TextColorProperty.PropertyName || e.PropertyName == VisualElement.IsEnabledProperty.PropertyName) + UpdateTextColor(); } void OnEnded(object sender, EventArgs eventArgs) @@ -133,6 +139,16 @@ namespace Xamarin.Forms.Platform.iOS _picker.Select(Math.Max(formsIndex, 0), 0, true); } + void UpdateTextColor() + { + var textColor = Element.TextColor; + + if (textColor.IsDefault || !Element.IsEnabled) + Control.TextColor = _defaultTextColor; + else + Control.TextColor = textColor.ToUIColor(); + } + class PickerSource : UIPickerViewModel { readonly PickerRenderer _renderer; diff --git a/Xamarin.Forms.Platform.iOS/Renderers/TimePickerRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/TimePickerRenderer.cs index 85d3ad35..55dbf1c8 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/TimePickerRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/TimePickerRenderer.cs @@ -24,6 +24,7 @@ namespace Xamarin.Forms.Platform.iOS public class TimePickerRenderer : ViewRenderer<TimePicker, UITextField> { UIDatePicker _picker; + UIColor _defaultTextColor; protected override void Dispose(bool disposing) { @@ -61,12 +62,15 @@ namespace Xamarin.Forms.Platform.iOS entry.InputView = _picker; entry.InputAccessoryView = toolbar; + _defaultTextColor = entry.TextColor; + _picker.ValueChanged += OnValueChanged; SetNativeControl(entry); } UpdateTime(); + UpdateTextColor(); } base.OnElementChanged(e); @@ -78,6 +82,9 @@ namespace Xamarin.Forms.Platform.iOS if (e.PropertyName == TimePicker.TimeProperty.PropertyName || e.PropertyName == TimePicker.FormatProperty.PropertyName) UpdateTime(); + + if (e.PropertyName == TimePicker.TextColorProperty.PropertyName || e.PropertyName == VisualElement.IsEnabledProperty.PropertyName) + UpdateTextColor(); } void OnEnded(object sender, EventArgs eventArgs) @@ -95,6 +102,16 @@ namespace Xamarin.Forms.Platform.iOS ((IElementController)Element).SetValueFromRenderer(TimePicker.TimeProperty, _picker.Date.ToDateTime() - new DateTime(1, 1, 1)); } + void UpdateTextColor() + { + var textColor = Element.TextColor; + + if (textColor.IsDefault || !Element.IsEnabled) + Control.TextColor = _defaultTextColor; + else + Control.TextColor = textColor.ToUIColor(); + } + void UpdateTime() { _picker.Date = new DateTime(1, 1, 1).Add(Element.Time).ToNSDate(); |