From: Sandro Cavazzoni Date: Thu, 12 Jan 2017 19:38:24 +0000 (+0100) Subject: [iOS] Fix child view position when the Navigation Bar is translucent (#659) X-Git-Tag: beta-2.3.4-pre1.1~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f81e41b11b4e1398f67f047725c2b3438094d5f8;p=platform%2Fupstream%2Fxamarin-forms.git [iOS] Fix child view position when the Navigation Bar is translucent (#659) --- diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index 6af4021..6b698f2 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -154,7 +154,7 @@ namespace Xamarin.Forms.Platform.iOS var toolbar = _secondaryToolbar; // Use 0 if the NavBar is hidden or will be hidden - var toolbarY = NavigationBarHidden || !NavigationPage.GetHasNavigationBar(Current) ? 0 : navBarFrame.Bottom; + var toolbarY = NavigationBarHidden || NavigationBar.Translucent || !NavigationPage.GetHasNavigationBar(Current) ? 0 : navBarFrame.Bottom; toolbar.Frame = new RectangleF(0, toolbarY, View.Frame.Width, toolbar.Frame.Height); double trueBottom = toolbar.Hidden ? toolbarY : toolbar.Frame.Bottom; @@ -824,7 +824,13 @@ namespace Xamarin.Forms.Platform.iOS public override void ViewWillAppear(bool animated) { UpdateNavigationBarVisibility(animated); - EdgesForExtendedLayout = UIRectEdge.None; + + NavigationRenderer n; + var isTranslucent = false; + if (_navigation.TryGetTarget(out n)) + isTranslucent = n.NavigationBar.Translucent; + EdgesForExtendedLayout = isTranslucent ? UIRectEdge.All : UIRectEdge.None; + base.ViewWillAppear(animated); }