From 7eb20b26cca563f2f19efb76248009b197b1bbad Mon Sep 17 00:00:00 2001 From: Gerald Versluis Date: Thu, 25 Nov 2021 09:34:32 +0100 Subject: [PATCH 1/5] Prefer UINavigationBar.Appearance over Forms settings --- Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index f67f99ab9e7..f3a26d00f6d 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -667,6 +667,9 @@ void UpdateBarBackground() if (Forms.IsiOS13OrNewer) { + if (UINavigationBar.Appearance.BackgroundColor != null) + return; + var navigationBarAppearance = NavigationBar.StandardAppearance; navigationBarAppearance.ConfigureWithOpaqueBackground(); From eb1bf10ac25e245da6e050adf2cab41a18780df0 Mon Sep 17 00:00:00 2001 From: Gerald Versluis Date: Thu, 25 Nov 2021 12:50:10 +0100 Subject: [PATCH 2/5] Update NavigationRenderer.cs --- .../Renderers/NavigationRenderer.cs | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index f3a26d00f6d..597024c53fc 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -667,26 +667,27 @@ void UpdateBarBackground() if (Forms.IsiOS13OrNewer) { - if (UINavigationBar.Appearance.BackgroundColor != null) - return; - var navigationBarAppearance = NavigationBar.StandardAppearance; navigationBarAppearance.ConfigureWithOpaqueBackground(); - if (barBackgroundColor == Color.Default) + // Let Appearance API take precedence always + if (UINavigationBar.Appearance.BackgroundColor == null) { - navigationBarAppearance.BackgroundColor = ColorExtensions.BackgroundColor; + if (barBackgroundColor == Color.Default) + { + navigationBarAppearance.BackgroundColor = ColorExtensions.BackgroundColor; - var parentingViewController = GetParentingViewController(); - parentingViewController?.SetupDefaultNavigationBarAppearance(); - } - else - navigationBarAppearance.BackgroundColor = barBackgroundColor.ToUIColor(); + var parentingViewController = GetParentingViewController(); + parentingViewController?.SetupDefaultNavigationBarAppearance(); + } + else + navigationBarAppearance.BackgroundColor = barBackgroundColor.ToUIColor(); - var barBackgroundBrush = NavPage.BarBackground; - var backgroundImage = NavigationBar.GetBackgroundImage(barBackgroundBrush); - navigationBarAppearance.BackgroundImage = backgroundImage; + var barBackgroundBrush = NavPage.BarBackground; + var backgroundImage = NavigationBar.GetBackgroundImage(barBackgroundBrush); + navigationBarAppearance.BackgroundImage = backgroundImage; + } NavigationBar.CompactAppearance = navigationBarAppearance; NavigationBar.StandardAppearance = navigationBarAppearance; From 3b0a96bdebf960f53c40961971f6f87ef77670a9 Mon Sep 17 00:00:00 2001 From: Gerald Versluis Date: Thu, 25 Nov 2021 14:31:05 +0100 Subject: [PATCH 3/5] Update NavigationRenderer.cs --- .../Renderers/NavigationRenderer.cs | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index 597024c53fc..ab9c6c04859 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -667,27 +667,30 @@ void UpdateBarBackground() if (Forms.IsiOS13OrNewer) { + var appearanceBgColor = UINavigationBar.Appearance.BackgroundColor; + var navigationBarAppearance = NavigationBar.StandardAppearance; navigationBarAppearance.ConfigureWithOpaqueBackground(); - // Let Appearance API take precedence always - if (UINavigationBar.Appearance.BackgroundColor == null) + // Let Appearance API take precedence if set + if (appearanceBgColor != null) { - if (barBackgroundColor == Color.Default) - { - navigationBarAppearance.BackgroundColor = ColorExtensions.BackgroundColor; - - var parentingViewController = GetParentingViewController(); - parentingViewController?.SetupDefaultNavigationBarAppearance(); - } - else - navigationBarAppearance.BackgroundColor = barBackgroundColor.ToUIColor(); + navigationBarAppearance.BackgroundColor = appearanceBgColor; + } + else if (barBackgroundColor == Color.Default) + { + navigationBarAppearance.BackgroundColor = ColorExtensions.BackgroundColor; - var barBackgroundBrush = NavPage.BarBackground; - var backgroundImage = NavigationBar.GetBackgroundImage(barBackgroundBrush); - navigationBarAppearance.BackgroundImage = backgroundImage; + var parentingViewController = GetParentingViewController(); + parentingViewController?.SetupDefaultNavigationBarAppearance(); } + else + navigationBarAppearance.BackgroundColor = barBackgroundColor.ToUIColor(); + + var barBackgroundBrush = NavPage.BarBackground; + var backgroundImage = NavigationBar.GetBackgroundImage(barBackgroundBrush); + navigationBarAppearance.BackgroundImage = backgroundImage; NavigationBar.CompactAppearance = navigationBarAppearance; NavigationBar.StandardAppearance = navigationBarAppearance; From 220175325392c128cf111ba4928a766346e9ad33 Mon Sep 17 00:00:00 2001 From: Gerald Versluis Date: Tue, 11 Jan 2022 14:52:01 +0100 Subject: [PATCH 4/5] Update NavigationRenderer.cs --- .../Renderers/NavigationRenderer.cs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index ab9c6c04859..ee8c1a843ab 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -667,20 +667,14 @@ void UpdateBarBackground() if (Forms.IsiOS13OrNewer) { - var appearanceBgColor = UINavigationBar.Appearance.BackgroundColor; - var navigationBarAppearance = NavigationBar.StandardAppearance; navigationBarAppearance.ConfigureWithOpaqueBackground(); - // Let Appearance API take precedence if set - if (appearanceBgColor != null) - { - navigationBarAppearance.BackgroundColor = appearanceBgColor; - } - else if (barBackgroundColor == Color.Default) + if (barBackgroundColor == Color.Default) { - navigationBarAppearance.BackgroundColor = ColorExtensions.BackgroundColor; + // Let Appearance API take precedence if set + navigationBarAppearance.BackgroundColor = UINavigationBar.Appearance.BackgroundColor ??ColorExtensions.BackgroundColor; var parentingViewController = GetParentingViewController(); parentingViewController?.SetupDefaultNavigationBarAppearance(); From 2c9b58ac2ae5fae35c726c915e562217aeebb4bf Mon Sep 17 00:00:00 2001 From: Gerald Versluis Date: Tue, 11 Jan 2022 14:53:26 +0100 Subject: [PATCH 5/5] Update NavigationRenderer.cs --- Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index ee8c1a843ab..8b9b7767f6c 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -674,7 +674,7 @@ void UpdateBarBackground() if (barBackgroundColor == Color.Default) { // Let Appearance API take precedence if set - navigationBarAppearance.BackgroundColor = UINavigationBar.Appearance.BackgroundColor ??ColorExtensions.BackgroundColor; + navigationBarAppearance.BackgroundColor = UINavigationBar.Appearance.BackgroundColor ?? ColorExtensions.BackgroundColor; var parentingViewController = GetParentingViewController(); parentingViewController?.SetupDefaultNavigationBarAppearance();