add file
This commit is contained in:
parent
6b28ade15a
commit
9f5685a2f8
153
Pixiview.iOS/Renderers/AppShellSection/AppAppearanceTracker.cs
Normal file
153
Pixiview.iOS/Renderers/AppShellSection/AppAppearanceTracker.cs
Normal file
@ -0,0 +1,153 @@
|
||||
using CoreGraphics;
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
namespace Pixiview.iOS.Renderers.AppShellSection
|
||||
{
|
||||
public class AppShellNavBarAppearanceTracker : IShellNavBarAppearanceTracker
|
||||
{
|
||||
UIColor _defaultBarTint;
|
||||
UIColor _defaultTint;
|
||||
UIStringAttributes _defaultTitleAttributes;
|
||||
float _shadowOpacity = float.MinValue;
|
||||
CGColor _shadowColor;
|
||||
|
||||
public void ResetAppearance(UINavigationController controller)
|
||||
{
|
||||
if (_defaultTint != null)
|
||||
{
|
||||
var navBar = controller.NavigationBar;
|
||||
navBar.TintColor = _defaultBarTint;
|
||||
navBar.TintColor = _defaultTint;
|
||||
navBar.TitleTextAttributes = _defaultTitleAttributes;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetAppearance(UINavigationController controller, ShellAppearance appearance)
|
||||
{
|
||||
var background = appearance.BackgroundColor;
|
||||
var foreground = appearance.ForegroundColor;
|
||||
var titleColor = appearance.TitleColor;
|
||||
|
||||
var navBar = controller.NavigationBar;
|
||||
|
||||
if (_defaultTint == null)
|
||||
{
|
||||
_defaultBarTint = navBar.BarTintColor;
|
||||
_defaultTint = navBar.TintColor;
|
||||
_defaultTitleAttributes = navBar.TitleTextAttributes;
|
||||
}
|
||||
|
||||
if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0))
|
||||
{
|
||||
navBar.TintColor = UIColor.SecondaryLabelColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!background.IsDefault)
|
||||
navBar.BarTintColor = background.ToUIColor();
|
||||
if (!foreground.IsDefault)
|
||||
navBar.TintColor = foreground.ToUIColor();
|
||||
if (!titleColor.IsDefault)
|
||||
{
|
||||
navBar.TitleTextAttributes = new UIStringAttributes
|
||||
{
|
||||
ForegroundColor = titleColor.ToUIColor()
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SetHasShadow(UINavigationController controller, bool hasShadow)
|
||||
{
|
||||
var navigationBar = controller.NavigationBar;
|
||||
if (_shadowOpacity == float.MinValue)
|
||||
{
|
||||
// Don't do anything if user hasn't changed the shadow to true
|
||||
if (!hasShadow)
|
||||
return;
|
||||
|
||||
_shadowOpacity = navigationBar.Layer.ShadowOpacity;
|
||||
_shadowColor = navigationBar.Layer.ShadowColor;
|
||||
}
|
||||
|
||||
if (hasShadow)
|
||||
{
|
||||
navigationBar.Layer.ShadowColor = UIColor.Black.CGColor;
|
||||
navigationBar.Layer.ShadowOpacity = 1.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
navigationBar.Layer.ShadowColor = _shadowColor;
|
||||
navigationBar.Layer.ShadowOpacity = _shadowOpacity;
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
public void UpdateLayout(UINavigationController controller)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class AppShellTabBarAppearanceTracker : IShellTabBarAppearanceTracker
|
||||
{
|
||||
UIColor _defaultBarTint;
|
||||
UIColor _defaultTint;
|
||||
UIColor _defaultUnselectedTint;
|
||||
|
||||
public void ResetAppearance(UITabBarController controller)
|
||||
{
|
||||
if (_defaultTint == null)
|
||||
return;
|
||||
|
||||
var tabBar = controller.TabBar;
|
||||
tabBar.BarTintColor = _defaultBarTint;
|
||||
tabBar.TintColor = _defaultTint;
|
||||
tabBar.UnselectedItemTintColor = _defaultUnselectedTint;
|
||||
}
|
||||
|
||||
public void SetAppearance(UITabBarController controller, ShellAppearance appearance)
|
||||
{
|
||||
IShellAppearanceElement appearanceElement = appearance;
|
||||
var backgroundColor = appearanceElement.EffectiveTabBarBackgroundColor;
|
||||
var unselectedColor = appearanceElement.EffectiveTabBarUnselectedColor;
|
||||
var tintColor = appearanceElement.EffectiveTabBarForegroundColor; // appearanceElement.EffectiveTabBarTitleColor;
|
||||
|
||||
var tabBar = controller.TabBar;
|
||||
|
||||
if (_defaultTint == null)
|
||||
{
|
||||
_defaultBarTint = tabBar.BarTintColor;
|
||||
_defaultTint = tabBar.TintColor;
|
||||
_defaultUnselectedTint = tabBar.UnselectedItemTintColor;
|
||||
}
|
||||
|
||||
if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0))
|
||||
{
|
||||
tabBar.TintColor = UIColor.LabelColor;
|
||||
//tabBar.UnselectedItemTintColor = UIColor.TertiaryLabelColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!backgroundColor.IsDefault)
|
||||
tabBar.BarTintColor = backgroundColor.ToUIColor();
|
||||
if (!tintColor.IsDefault)
|
||||
tabBar.TintColor = tintColor.ToUIColor();
|
||||
if (!unselectedColor.IsDefault)
|
||||
tabBar.UnselectedItemTintColor = unselectedColor.ToUIColor();
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
public void UpdateLayout(UITabBarController controller)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user