-
Notifications
You must be signed in to change notification settings - Fork 2k
[iOS/Mac Catalyst 26] Fix NavigationPage content not extending behind floating glass tab bar #35523
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
f129764
6eab689
63fab83
00d7743
07d44e3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| using TabbedPage = Microsoft.Maui.Controls.TabbedPage; | ||
|
|
||
| namespace Maui.Controls.Sample.Issues; | ||
|
|
||
| [Issue(IssueTracker.Github, 35490, "[iOS 26] TabbedPage with NavigationPage children clips content above floating glass tab bar", PlatformAffected.iOS)] | ||
| public class Issue35490 : TabbedPage | ||
| { | ||
| public Issue35490() | ||
| { | ||
| var page1 = new ContentPage | ||
| { | ||
| Title = "Tab1", | ||
| BackgroundColor = Colors.MediumPurple, | ||
| Content = new Label | ||
| { | ||
| AutomationId = "Tab1Label", | ||
| Text = "Tab 1 — on iOS 26+, test passes if purple background extends under the floating tab bar", | ||
| TextColor = Colors.White, | ||
| VerticalOptions = LayoutOptions.Center, | ||
| HorizontalOptions = LayoutOptions.Center, | ||
| }, | ||
| }; | ||
|
|
||
| var page2 = new ContentPage | ||
| { | ||
| Title = "Tab2", | ||
| BackgroundColor = Colors.DarkCyan, | ||
| Content = new Label | ||
| { | ||
| AutomationId = "Tab2Label", | ||
| Text = "Tab 2 — on iOS 26+, test passes if cyan background extends under the floating tab bar", | ||
| TextColor = Colors.White, | ||
| VerticalOptions = LayoutOptions.Center, | ||
| HorizontalOptions = LayoutOptions.Center, | ||
| }, | ||
| }; | ||
|
|
||
| Children.Add(new NavigationPage(page1) { Title = "Tab1" }); | ||
| Children.Add(new NavigationPage(page2) { Title = "Tab2" }); | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| #if IOS || MACCATALYST // The floating glass tab bar is a UIKit-only feature introduced in iOS/MacCatalyst 26. This issue does not affect Android or Windows. | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [major] Regression Prevention and Test Coverage - This test compiles for MacCatalyst ( |
||
| using NUnit.Framework; | ||
| using UITest.Appium; | ||
| using UITest.Core; | ||
|
|
||
| namespace Microsoft.Maui.TestCases.Tests.Issues; | ||
|
|
||
| public class Issue35490 : _IssuesUITest | ||
| { | ||
| public Issue35490(TestDevice testDevice) : base(testDevice) | ||
| { | ||
| } | ||
|
|
||
| public override string Issue => "[iOS 26] TabbedPage with NavigationPage children clips content above floating glass tab bar"; | ||
|
|
||
| [Test] | ||
| [Category(UITestCategories.TabbedPage)] | ||
| public void NavigationPageChildContentExtendsUnderFloatingTabBar() | ||
| { | ||
| App.WaitForElement("Tab1Label"); | ||
| VerifyScreenshot(); | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [major] Regression Prevention and Test Coverage - The committed iOS 26 screenshot baseline does not match the PR's actual fixed rendering: the saved gate result still failed with a 1.82% mismatch after the production fix, while updating the iOS 26 baseline to the actual PR rendering made the targeted test pass. Please update |
||
| } | ||
| } | ||
| #endif | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[major] iOS/MacCatalyst Platform Specifics — This extends the bottom edge for every visible
UITabBarControlleron iOS/MacCatalyst 26+, regardless of the MAUITabbedPagetranslucency setting. Concrete scenario: an app setsTabbedPage.On<iOS>().SetTranslucencyMode(TranslucencyMode.Opaque)to keep content above an opaque tab bar; this branch still opts the navigation child into bottom extension whenever the tab bar is visible. Please scope this to the default/floating-glass case or respectTabBar.Translucent/the MAUI translucency mode so explicit opaque tab bars keep their existing layout behavior.