You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI TabBar Shell iOS端页面内容被遮挡问题求助

问题分析

你的问题根源是iOS平台的安全区域适配问题:iPhone 14 Pro(含灵动岛)的底部TabBar会占用部分屏幕安全区域,而当前页面布局未考虑该边距,导致垂直居中的Label被TabBar遮挡,Android端因默认布局逻辑适配了系统控件占位,所以显示正常。

解决方法

方法1:启用页面安全区域自动适配

直接在ContentPage上添加UseSafeArea="True"属性,MAUI会自动为页面添加适配安全区域的内边距,避免内容被状态栏、TabBar等系统控件遮挡。

修改后的NewPage1代码:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TABSample.NewPage1"
             Title="NewPage1"
             UseSafeArea="True">
    <StackLayout>
        <Label 
            Text="Welcome to .NET MAUI!"
            VerticalOptions="Center" 
            HorizontalOptions="Center" />
    </StackLayout>
</ContentPage>

方法2:手动绑定安全区域内边距

如果需要更精细的布局控制,可以通过绑定页面的SafeAreaInsets动态设置布局内边距:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TABSample.NewPage1"
             Title="NewPage1"
             x:Name="CurrentPage">
    <StackLayout Padding="{Binding Source={x:Reference CurrentPage}, Path=SafeAreaInsets}">
        <Label 
            Text="Welcome to .NET MAUI!"
            VerticalOptions="Center" 
            HorizontalOptions="Center" />
    </StackLayout>
</ContentPage>

方法3:全局配置安全区域适配

如果所有页面都需要适配安全区域,可以在App.xaml中添加全局样式,无需逐个页面设置:

<Application.Resources>
    <Style TargetType="ContentPage">
        <Setter Property="UseSafeArea" Value="True" />
    </Style>
</Application.Resources>

内容的提问来源于stack exchange,提问作者Sunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:51:30