diff --git a/Pixiview.iOS/Pixiview.iOS.csproj b/Pixiview.iOS/Pixiview.iOS.csproj index fc5ab43..61894a4 100644 --- a/Pixiview.iOS/Pixiview.iOS.csproj +++ b/Pixiview.iOS/Pixiview.iOS.csproj @@ -77,6 +77,7 @@ + @@ -145,6 +146,7 @@ + diff --git a/Pixiview.iOS/Renderers/AdaptedPageRenderer.cs b/Pixiview.iOS/Renderers/AdaptedPageRenderer.cs index 546d3ce..38ace7b 100644 --- a/Pixiview.iOS/Renderers/AdaptedPageRenderer.cs +++ b/Pixiview.iOS/Renderers/AdaptedPageRenderer.cs @@ -1,6 +1,6 @@ -using System.Diagnostics.CodeAnalysis; -using Foundation; +using Foundation; using Pixiview.iOS.Renderers; +using Pixiview.iOS.Services; using Pixiview.UI; using Pixiview.Utils; using UIKit; @@ -46,11 +46,8 @@ namespace Pixiview.iOS.Renderers var element = Element; if (element != null) { - var style = ConvertStyle(Screen.GetStatusBarStyle(element)); - if (UIApplication.SharedApplication.StatusBarStyle != style) - { - SetStatusBarStyle(style); - } + var style = EnvironmentService.ConvertStyle(Screen.GetStatusBarStyle(element)); + EnvironmentService.SetStatusBarStyle(style); } observer = UIDevice.Notifications.ObserveOrientationDidChange(ChangeOrientation); @@ -68,38 +65,6 @@ namespace Pixiview.iOS.Renderers base.ViewWillDisappear(animated); } - private void SetStatusBarStyle(UIStatusBarStyle style) - { - if (style == UIStatusBarStyle.BlackOpaque) - { - UIApplication.SharedApplication.SetStatusBarHidden(true, true); - } - else - { - UIApplication.SharedApplication.SetStatusBarStyle(style, true); - UIApplication.SharedApplication.SetStatusBarHidden(false, true); - } - - SetNeedsStatusBarAppearanceUpdate(); - } - - [SuppressMessage("Code Notifications", "XI0002:Notifies you from using newer Apple APIs when targeting an older OS version", Justification = "")] - private UIStatusBarStyle ConvertStyle(StatusBarStyles style) - { - switch (style) - { - case StatusBarStyles.DarkText: - return UIStatusBarStyle.DarkContent; - case StatusBarStyles.WhiteText: - return UIStatusBarStyle.LightContent; - case StatusBarStyles.Hidden: - return UIStatusBarStyle.BlackOpaque; - case StatusBarStyles.Default: - default: - return UIStatusBarStyle.Default; - } - } - void ChangeOrientation(object sender, NSNotificationEventArgs e) { var current = UIDevice.CurrentDevice.Orientation; @@ -113,7 +78,7 @@ namespace Pixiview.iOS.Renderers lastOrientation = current; if (current == UIDeviceOrientation.Portrait && UIApplication.SharedApplication.StatusBarHidden) { - var style = ConvertStyle(Screen.GetStatusBarStyle(Element)); + var style = EnvironmentService.ConvertStyle(Screen.GetStatusBarStyle(Element)); if (style != UIStatusBarStyle.BlackOpaque) { UIApplication.SharedApplication.SetStatusBarHidden(false, true); diff --git a/Pixiview.iOS/Renderers/AppShellRenderer.cs b/Pixiview.iOS/Renderers/AppShellRenderer.cs index bdad98a..ee384fc 100644 --- a/Pixiview.iOS/Renderers/AppShellRenderer.cs +++ b/Pixiview.iOS/Renderers/AppShellRenderer.cs @@ -1,5 +1,7 @@ -using System.Threading.Tasks; +using System.Diagnostics.CodeAnalysis; +using System.Threading.Tasks; using Pixiview.iOS.Renderers; +using Pixiview.iOS.Renderers.AppShellSection; using Pixiview.Utils; using UIKit; using Xamarin.Forms; @@ -14,7 +16,7 @@ namespace Pixiview.iOS.Renderers protected override IShellSectionRenderer CreateShellSectionRenderer(ShellSection shellSection) { - var renderer = base.CreateShellSectionRenderer(shellSection); + var renderer = new AppShellSectionRenderer(this); if (renderer is ShellSectionRenderer sr && Element is AppShell shell) { shell.SetNavigationBarHeight( @@ -24,15 +26,36 @@ namespace Pixiview.iOS.Renderers return renderer; } + [SuppressMessage("Code Notifications", "XI0002:Notifies you from using newer Apple APIs when targeting an older OS version", Justification = "")] + protected override IShellItemRenderer CreateShellItemRenderer(ShellItem item) + { + var renderer = base.CreateShellItemRenderer(item); + if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0)) + { + if (renderer.ViewController is UITabBarController controller) + { + var tabBar = controller.TabBar; + tabBar.TintColor = UIColor.SecondaryLabelColor.ColorWithAlpha(1); + tabBar.UnselectedItemTintColor = UIColor.SecondaryLabelColor; + } + } + return renderer; + } + protected override IShellItemTransition CreateShellItemTransition() { return new AppShellItemTransition(); } + + protected override IShellTabBarAppearanceTracker CreateTabBarAppearanceTracker() + { + return new AppShellTabBarAppearanceTracker(); + } } public class AppShellItemTransition : IShellItemTransition { - [System.Diagnostics.CodeAnalysis.SuppressMessage("Code Notifications", "XI0001:Notifies you with advices on how to use Apple APIs", Justification = "")] + [SuppressMessage("Code Notifications", "XI0001:Notifies you with advices on how to use Apple APIs", Justification = "")] public Task Transition(IShellItemRenderer oldRenderer, IShellItemRenderer newRenderer) { var task = new TaskCompletionSource(); @@ -47,4 +70,90 @@ namespace Pixiview.iOS.Renderers return task.Task; } } + + public class AppShellTabBarAppearanceTracker : IShellTabBarAppearanceTracker + { + UIColor _defaultBarTint; + UIColor _defaultTint; + UIColor _defaultUnselectedTint; + + public void Dispose() + { + } + + 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 titleColor = appearanceElement.EffectiveTabBarTitleColor; + + var tabBar = controller.TabBar; + //bool operatingSystemSupportsUnselectedTint = Forms.IsiOS10OrNewer; + + if (_defaultTint == null) + { + _defaultBarTint = tabBar.BarTintColor; + _defaultTint = tabBar.TintColor; + + //if (operatingSystemSupportsUnselectedTint) + { + _defaultUnselectedTint = tabBar.UnselectedItemTintColor; + } + } + + //if (!backgroundColor.IsDefault) + // tabBar.BarTintColor = backgroundColor.ToUIColor(); + if (!UIDevice.CurrentDevice.CheckSystemVersion(13, 0)) + { + if (!titleColor.IsDefault) + tabBar.TintColor = titleColor.ToUIColor(); + + //if (operatingSystemSupportsUnselectedTint) + { + if (!unselectedColor.IsDefault) + tabBar.UnselectedItemTintColor = unselectedColor.ToUIColor(); + } + } + } + + public void UpdateLayout(UITabBarController controller) + { + } + } + + public class AppShellSectionRenderer : ShellSectionRenderer + { + public AppShellSectionRenderer(IShellContext context) : base(context) + { + } + + protected override IShellSectionRootRenderer CreateShellSectionRootRenderer(ShellSection shellSection, IShellContext shellContext) + { + return new AppShellSectionRootRenderer(shellSection, shellContext); + } + } + + public class AppShellSectionRootRenderer : ShellSectionRootRenderer + { + public AppShellSectionRootRenderer(ShellSection shellSection, IShellContext shellContext) : base(shellSection, shellContext) + { + } + + protected override IShellSectionRootHeader CreateShellSectionRootHeader(IShellContext shellContext) + { + return new AppShellSectionRootHeader(shellContext); + } + } } diff --git a/Pixiview.iOS/Renderers/AppShellSection/AppShellSectionRootHeader.cs b/Pixiview.iOS/Renderers/AppShellSection/AppShellSectionRootHeader.cs new file mode 100644 index 0000000..bb1fb4a --- /dev/null +++ b/Pixiview.iOS/Renderers/AppShellSection/AppShellSectionRootHeader.cs @@ -0,0 +1,326 @@ +using System; +using System.Collections.Specialized; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using CoreGraphics; +using Foundation; +using UIKit; +using Xamarin.Forms; +using Xamarin.Forms.Platform.iOS; + +namespace Pixiview.iOS.Renderers.AppShellSection +{ + public class AppShellSectionRootHeader : UICollectionViewController, IAppearanceObserver, IShellSectionRootHeader + { + #region IAppearanceObserver + + readonly Color _defaultBackgroundColor = new Color(0.964); + readonly Color _defaultForegroundColor = Color.Black; + readonly Color _defaultUnselectedColor = Color.Black.MultiplyAlpha(0.7); + + void IAppearanceObserver.OnAppearanceChanged(ShellAppearance appearance) + { + if (appearance == null) + ResetAppearance(); + else + SetAppearance(appearance); + } + + protected virtual void ResetAppearance() + { + SetValues(_defaultBackgroundColor, _defaultForegroundColor, _defaultUnselectedColor); + } + + protected virtual void SetAppearance(ShellAppearance appearance) + { + SetValues(appearance.BackgroundColor.IsDefault ? _defaultBackgroundColor : appearance.BackgroundColor, + appearance.ForegroundColor.IsDefault ? _defaultForegroundColor : appearance.ForegroundColor, + appearance.UnselectedColor.IsDefault ? _defaultUnselectedColor : appearance.UnselectedColor); + } + + void SetValues(Color backgroundColor, Color foregroundColor, Color unselectedColor) + { + CollectionView.BackgroundColor = new Color(backgroundColor.R, backgroundColor.G, backgroundColor.B, .663).ToUIColor(); + _bar.BackgroundColor = foregroundColor.ToUIColor(); + + bool reloadData = _selectedColor != foregroundColor || _unselectedColor != unselectedColor; + + _selectedColor = foregroundColor; + _unselectedColor = unselectedColor; + + if (reloadData) + CollectionView.ReloadData(); + } + + #endregion IAppearanceObserver + + static readonly NSString CellId = new NSString("HeaderCell"); + + readonly IShellContext _shellContext; + UIView _bar; + UIView _bottomShadow; + Color _selectedColor; + Color _unselectedColor; + bool _isDisposed; + + public AppShellSectionRootHeader(IShellContext shellContext) : base(new UICollectionViewFlowLayout()) + { + _shellContext = shellContext; + } + + public double SelectedIndex { get; set; } + public ShellSection ShellSection { get; set; } + IShellSectionController ShellSectionController => ShellSection; + + public UIViewController ViewController => this; + + public override bool CanMoveItem(UICollectionView collectionView, NSIndexPath indexPath) + { + return false; + } + + public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath) + { + var reusedCell = (UICollectionViewCell)collectionView.DequeueReusableCell(CellId, indexPath); + + if (!(reusedCell is ShellSectionHeaderCell headerCell)) + return reusedCell; + + var selectedItems = collectionView.GetIndexPathsForSelectedItems(); + + var shellContent = ShellSectionController.GetItems()[indexPath.Row]; + headerCell.Label.Text = shellContent.Title; + headerCell.Label.SetNeedsDisplay(); + + headerCell.SelectedColor = _selectedColor.ToUIColor(); + headerCell.UnSelectedColor = _unselectedColor.ToUIColor(); + + if (selectedItems.Length > 0 && selectedItems[0].Row == indexPath.Row) + headerCell.Selected = true; + else + headerCell.Selected = false; + + return headerCell; + } + + public override nint GetItemsCount(UICollectionView collectionView, nint section) + { + return ShellSectionController.GetItems().Count; + } + + public override void ItemDeselected(UICollectionView collectionView, NSIndexPath indexPath) + { + if (CollectionView.CellForItem(indexPath) is ShellSectionHeaderCell cell) + cell.Label.TextColor = _unselectedColor.ToUIColor(); + } + + public override void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath) + { + var row = indexPath.Row; + + var item = ShellSectionController.GetItems()[row]; + + if (item != ShellSection.CurrentItem) + ShellSection.SetValueFromRenderer(ShellSection.CurrentItemProperty, item); + + if (CollectionView.CellForItem(indexPath) is ShellSectionHeaderCell cell) + cell.Label.TextColor = _selectedColor.ToUIColor(); + } + + public override nint NumberOfSections(UICollectionView collectionView) + { + return 1; + } + + public override bool ShouldSelectItem(UICollectionView collectionView, NSIndexPath indexPath) + { + var row = indexPath.Row; + var item = ShellSectionController.GetItems()[row]; + IShellController shellController = _shellContext.Shell; + + if (item == ShellSection.CurrentItem) + return true; + return shellController.ProposeNavigation(ShellNavigationSource.ShellContentChanged, (ShellItem)ShellSection.Parent, ShellSection, item, ShellSection.Stack, true); + } + + public override void ViewDidLayoutSubviews() + { + if (_isDisposed) + return; + + base.ViewDidLayoutSubviews(); + + LayoutBar(); + + _bottomShadow.Frame = new CGRect(0, CollectionView.Frame.Bottom, CollectionView.Frame.Width, 0.5); + } + + public override void ViewDidLoad() + { + if (_isDisposed) + return; + + base.ViewDidLoad(); + + CollectionView.ScrollsToTop = false; + CollectionView.Bounces = false; + CollectionView.AlwaysBounceHorizontal = false; + CollectionView.ShowsHorizontalScrollIndicator = false; + CollectionView.ClipsToBounds = false; + + _bar = new UIView(new CGRect(0, 0, 20, 20)); + _bar.Layer.ZPosition = 9001; //its over 9000! + CollectionView.AddSubview(_bar); + + _bottomShadow = new UIView(new CGRect(0, 0, 10, 1)) + { + BackgroundColor = Color.Black.MultiplyAlpha(0.3).ToUIColor() + }; + _bottomShadow.Layer.ZPosition = 9002; + CollectionView.AddSubview(_bottomShadow); + + var flowLayout = Layout as UICollectionViewFlowLayout; + flowLayout.ScrollDirection = UICollectionViewScrollDirection.Horizontal; + flowLayout.MinimumInteritemSpacing = 0; + flowLayout.MinimumLineSpacing = 0; + flowLayout.EstimatedItemSize = new CGSize(70, 35); + + CollectionView.RegisterClassForCell(GetCellType(), CellId); + + ((IShellController)_shellContext.Shell).AddAppearanceObserver(this, ShellSection); + ShellSectionController.ItemsCollectionChanged += OnShellSectionItemsChanged; + + UpdateSelectedIndex(); + ShellSection.PropertyChanged += OnShellSectionPropertyChanged; + } + + protected virtual Type GetCellType() + { + return typeof(ShellSectionHeaderCell); + } + + protected override void Dispose(bool disposing) + { + if (_isDisposed) + return; + + if (disposing) + { + ((IShellController)_shellContext.Shell).RemoveAppearanceObserver(this); + ShellSectionController.ItemsCollectionChanged -= OnShellSectionItemsChanged; + ShellSection.PropertyChanged -= OnShellSectionPropertyChanged; + + ShellSection = null; + _bar.RemoveFromSuperview(); + RemoveFromParentViewController(); + _bar.Dispose(); + _bar = null; + } + + _isDisposed = true; + base.Dispose(disposing); + } + + protected void LayoutBar() + { + if (SelectedIndex < 0) + return; + + if (ShellSectionController.GetItems().IndexOf(ShellSection.CurrentItem) != SelectedIndex) + return; + + var layout = CollectionView.GetLayoutAttributesForItem(NSIndexPath.FromItemSection((int)SelectedIndex, 0)); + + if (layout == null) + return; + + var frame = layout.Frame; + + if (_bar.Frame.Height != 2) + { + _bar.Frame = new CGRect(frame.X, frame.Bottom - 2, frame.Width, 2); + } + else + { + UIView.Animate(.25, () => _bar.Frame = new CGRect(frame.X, frame.Bottom - 2, frame.Width, 2)); + } + } + + protected virtual void OnShellSectionPropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == ShellSection.CurrentItemProperty.PropertyName) + { + UpdateSelectedIndex(); + } + } + + protected virtual void UpdateSelectedIndex(bool animated = false) + { + if (ShellSection.CurrentItem == null) + return; + + SelectedIndex = ShellSectionController.GetItems().IndexOf(ShellSection.CurrentItem); + + if (SelectedIndex < 0) + return; + + LayoutBar(); + + CollectionView.SelectItem(NSIndexPath.FromItemSection((int)SelectedIndex, 0), false, UICollectionViewScrollPosition.CenteredHorizontally); + } + + void OnShellSectionItemsChanged(object sender, NotifyCollectionChangedEventArgs e) + { + if (_isDisposed) + return; + + CollectionView.ReloadData(); + } + + public class ShellSectionHeaderCell : UICollectionViewCell + { + public UIColor SelectedColor { get; set; } + public UIColor UnSelectedColor { get; set; } + + public ShellSectionHeaderCell() + { + + } + + [Export("initWithFrame:")] + public ShellSectionHeaderCell(CGRect frame) : base(frame) + { + Label = new UILabel + { + TextAlignment = UITextAlignment.Center, + Font = UIFont.BoldSystemFontOfSize(14) + }; + ContentView.AddSubview(Label); + } + + public override bool Selected + { + get => base.Selected; + set + { + base.Selected = value; + Label.TextColor = value ? SelectedColor : UnSelectedColor; + } + } + + public UILabel Label { get; } + + public override void LayoutSubviews() + { + base.LayoutSubviews(); + + Label.Frame = Bounds; + } + + public override CGSize SizeThatFits(CGSize size) + { + return new CGSize(Label.SizeThatFits(size).Width + 30, 35); + } + } + } +} diff --git a/Pixiview.iOS/Services/EnvironmentService.cs b/Pixiview.iOS/Services/EnvironmentService.cs index c060999..9588281 100644 --- a/Pixiview.iOS/Services/EnvironmentService.cs +++ b/Pixiview.iOS/Services/EnvironmentService.cs @@ -54,6 +54,11 @@ namespace Pixiview.iOS.Services } } + public void SetStatusBarStyle(StatusBarStyles style) + { + SetStatusBarStyle(ConvertStyle(style)); + } + public void SetStatusBarColor(Color color) { // nothing need to do @@ -61,6 +66,40 @@ namespace Pixiview.iOS.Services #endregion + public static void SetStatusBarStyle(UIStatusBarStyle style) + { + if (UIApplication.SharedApplication.StatusBarStyle == style) + { + return; + } + if (style == UIStatusBarStyle.BlackOpaque) + { + UIApplication.SharedApplication.SetStatusBarHidden(true, true); + } + else + { + UIApplication.SharedApplication.SetStatusBarStyle(style, true); + UIApplication.SharedApplication.SetStatusBarHidden(false, true); + } + } + + [SuppressMessage("Code Notifications", "XI0002:Notifies you from using newer Apple APIs when targeting an older OS version", Justification = "")] + public static UIStatusBarStyle ConvertStyle(StatusBarStyles style) + { + switch (style) + { + case StatusBarStyles.DarkText: + return UIStatusBarStyle.DarkContent; + case StatusBarStyles.WhiteText: + return UIStatusBarStyle.LightContent; + case StatusBarStyles.Hidden: + return UIStatusBarStyle.BlackOpaque; + case StatusBarStyles.Default: + default: + return UIStatusBarStyle.Default; + } + } + #region - Culture Info - public CultureInfo GetCurrentCultureInfo() diff --git a/Pixiview/App.cs b/Pixiview/App.cs index 664c928..f924c2f 100644 --- a/Pixiview/App.cs +++ b/Pixiview/App.cs @@ -60,6 +60,8 @@ namespace Pixiview themeInstance = LightTheme.Instance; } //DependencyService.Get().SetStatusBarColor + var style = (StatusBarStyles)themeInstance[ThemeBase.StatusBarStyle]; + DependencyService.Get().SetStatusBarStyle(style); Resources = themeInstance; } diff --git a/Pixiview/AppShell.xaml b/Pixiview/AppShell.xaml index c23be6e..63cbb30 100644 --- a/Pixiview/AppShell.xaml +++ b/Pixiview/AppShell.xaml @@ -7,8 +7,10 @@ xmlns:u="clr-namespace:Pixiview.UI" xmlns:util="clr-namespace:Pixiview.Utils" x:Class="Pixiview.AppShell" + BackgroundColor="{DynamicResource NavColor}" ForegroundColor="{DynamicResource MainTextColor}" - TitleColor="{DynamicResource MainTextColor}"> + TitleColor="{DynamicResource MainTextColor}" + UnselectedColor="{DynamicResource SubTextColor}"> @@ -27,23 +29,68 @@ + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + - diff --git a/Pixiview/Illust/MainPage.xaml b/Pixiview/Illust/MainPage.xaml index 0b4f0ff..5b28a13 100644 --- a/Pixiview/Illust/MainPage.xaml +++ b/Pixiview/Illust/MainPage.xaml @@ -7,7 +7,6 @@ xmlns:r="clr-namespace:Pixiview.Resources" x:Class="Pixiview.Illust.MainPage" util:Screen.StatusBarStyle="{DynamicResource StatusBarStyle}" - Shell.NavBarHasShadow="True" BackgroundColor="{DynamicResource WindowColor}" Title="{r:Text Follow}"> diff --git a/Pixiview/Illust/RankingPage.xaml b/Pixiview/Illust/RankingPage.xaml index bfe56cc..5f0766a 100644 --- a/Pixiview/Illust/RankingPage.xaml +++ b/Pixiview/Illust/RankingPage.xaml @@ -6,7 +6,6 @@ xmlns:util="clr-namespace:Pixiview.Utils" x:Class="Pixiview.Illust.RankingPage" util:Screen.StatusBarStyle="{DynamicResource StatusBarStyle}" - Shell.NavBarHasShadow="True" BackgroundColor="{DynamicResource WindowColor}"> diff --git a/Pixiview/Illust/NewsPage.xaml b/Pixiview/Illust/RecommendsPage.xaml similarity index 89% rename from Pixiview/Illust/NewsPage.xaml rename to Pixiview/Illust/RecommendsPage.xaml index 55e38e3..13793c1 100644 --- a/Pixiview/Illust/NewsPage.xaml +++ b/Pixiview/Illust/RecommendsPage.xaml @@ -5,11 +5,10 @@ xmlns:u="clr-namespace:Pixiview.UI" xmlns:util="clr-namespace:Pixiview.Utils" xmlns:r="clr-namespace:Pixiview.Resources" - x:Class="Pixiview.Illust.NewsPage" + x:Class="Pixiview.Illust.RecommendsPage" util:Screen.StatusBarStyle="{DynamicResource StatusBarStyle}" - Shell.NavBarHasShadow="True" BackgroundColor="{DynamicResource WindowColor}" - Title="{r:Text News}"> + Title="{r:Text Recommends}"> DoGetIllustList(IllustData data) { - return data.body.page.newPost; + if (ByUser) + { + return data.body.page.recommendUser.SelectMany(i => i.illustIds); + } + else + { + return data.body.page.recommend; + } } protected override IllustData DoLoadIllustData(bool force) diff --git a/Pixiview/Illust/ViewIllustPage.xaml b/Pixiview/Illust/ViewIllustPage.xaml index fc48957..0bcae70 100644 --- a/Pixiview/Illust/ViewIllustPage.xaml +++ b/Pixiview/Illust/ViewIllustPage.xaml @@ -9,7 +9,6 @@ util:Screen.StatusBarStyle="{DynamicResource StatusBarStyle}" ios:Page.UseSafeArea="False" Shell.TabBarIsVisible="False" - Shell.NavBarHasShadow="True" BackgroundColor="{DynamicResource WindowColor}" Title="{Binding IllustItem.Title}"> diff --git a/Pixiview/OptionPage.xaml b/Pixiview/OptionPage.xaml index d0a7216..03bdddf 100644 --- a/Pixiview/OptionPage.xaml +++ b/Pixiview/OptionPage.xaml @@ -5,7 +5,6 @@ xmlns:util="clr-namespace:Pixiview.Utils" x:Class="Pixiview.OptionPage" util:Screen.StatusBarStyle="{DynamicResource StatusBarStyle}" - Shell.NavBarHasShadow="True" BackgroundColor="{DynamicResource WindowColor}">