diff options
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs index 2db8ac26..91150769 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs @@ -23,6 +23,12 @@ namespace Xamarin.Forms.Platform.iOS { public class TabbedRenderer : UITabBarController, IVisualElementRenderer, IEffectControlProvider { + bool _barBackgroundColorWasSet; + bool _barTextColorWasSet; + UIColor _defaultBarTextColor; + bool _defaultBarTextColorSet; + UIColor _defaultBarColor; + bool _defaultBarColorSet; bool _loaded; Size _queuedSize; @@ -305,14 +311,31 @@ namespace Xamarin.Forms.Platform.iOS return; var barBackgroundColor = Tabbed.BarBackgroundColor; + var isDefaultColor = barBackgroundColor.IsDefault; + + if (isDefaultColor && !_barBackgroundColorWasSet) + return; + + if (!_defaultBarColorSet) + { + if (Forms.IsiOS7OrNewer) + _defaultBarColor = TabBar.BarTintColor; + else + _defaultBarColor = TabBar.TintColor; + + _defaultBarColorSet = true; + } + + if (!isDefaultColor) + _barBackgroundColorWasSet = true; if (Forms.IsiOS7OrNewer) { - TabBar.BarTintColor = barBackgroundColor == Color.Default ? UINavigationBar.Appearance.BarTintColor : barBackgroundColor.ToUIColor(); + TabBar.BarTintColor = isDefaultColor ? _defaultBarColor : barBackgroundColor.ToUIColor(); } else { - TabBar.TintColor = barBackgroundColor == Color.Default ? UINavigationBar.Appearance.TintColor : barBackgroundColor.ToUIColor(); + TabBar.TintColor = isDefaultColor ? _defaultBarColor : barBackgroundColor.ToUIColor(); } } @@ -322,13 +345,24 @@ namespace Xamarin.Forms.Platform.iOS return; var barTextColor = Tabbed.BarTextColor; + var isDefaultColor = barTextColor.IsDefault; + + if (isDefaultColor && !_barTextColorWasSet) + return; + + if (!_defaultBarTextColorSet) + { + _defaultBarTextColor = TabBar.TintColor; + _defaultBarTextColorSet = true; + } - var globalAttributes = UINavigationBar.Appearance.GetTitleTextAttributes(); + if (!isDefaultColor) + _barTextColorWasSet = true; - var attributes = new UITextAttributes { Font = globalAttributes.Font }; + var attributes = new UITextAttributes(); - if (barTextColor == Color.Default) - attributes.TextColor = globalAttributes.TextColor; + if (isDefaultColor) + attributes.TextColor = _defaultBarTextColor; else attributes.TextColor = barTextColor.ToUIColor(); @@ -341,7 +375,7 @@ namespace Xamarin.Forms.Platform.iOS // setting the unselected icon tint is not supported by iOS if (Forms.IsiOS7OrNewer) { - TabBar.TintColor = barTextColor == Color.Default ? UINavigationBar.Appearance.TintColor : barTextColor.ToUIColor(); + TabBar.TintColor = isDefaultColor ? _defaultBarTextColor : barTextColor.ToUIColor(); } } |