[iOS] Fix child view position when the Navigation Bar is translucent (#659)
authorSandro Cavazzoni <sandro@ideaful.it>
Thu, 12 Jan 2017 19:38:24 +0000 (20:38 +0100)
committerRui Marinho <me@ruimarinho.net>
Thu, 12 Jan 2017 19:38:24 +0000 (19:38 +0000)
Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs

index 6af4021..6b698f2 100644 (file)
@@ -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);
                        }