summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs')
-rw-r--r--Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs48
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();
}
}