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

.NET Maui页面在iPhone真机左截断,模拟器正常问题排查

解决MAUI页面在iPhone 12 Pro真机上Grid左截断的问题

可能的修复方案

1. 修正Grid的水平对齐设置

你的根Grid用了HorizontalOptions="EndAndExpand",这在iPhone 12 Pro真机的导航栈页面里可能导致布局计算偏差。直接改成FillAndExpand,让Grid填满父容器:

<Grid
    ColumnDefinitions="*,40"
    HorizontalOptions="FillAndExpand"
    RowDefinitions="40,40,*,40">

2. 给ContentPage加明确的Padding

iOS真机的安全区域处理逻辑和模拟器存在差异,尤其是导航栈中的页面。给ContentPage设置固定Padding,避免布局被挤压偏移:

<ContentPage
    ...
    Padding="{OnPlatform iOS='15,0,15,0', Default='0'}">

如果不需要适配刘海屏,也可以直接设为Padding="0",强制页面边缘对齐父容器。

3. 简化布局的ColumnSpan设置

SearchBar和Button都使用了Grid.ColumnSpan="2",结合*,40的列定义,可能在特定设备触发布局计算bug。要么把根Grid改成单列ColumnDefinitions="*",要么检查子元素的列跨度是否和列定义匹配,避免布局溢出。

4. 排查第三方控件的适配问题

页面使用了DevExpress的DXCollectionView,不排除是该控件在iPhone 12 Pro上存在适配问题。先替换为MAUI原生CollectionView验证:

<CollectionView
    x:Name="addSeriesList"
    Grid.Row="2"
    Grid.Column="0"
    Grid.ColumnSpan="2"
    Margin="0,0,0,0"
    BackgroundColor="{x:StaticResource AppBackgroundColor}"
    ItemsSource="{Binding Items, Mode=TwoWay}"
    SelectionMode="None">
    <!-- 保留原ItemTemplate内容 -->
</CollectionView>

5. 页面显示时强制刷新布局

在页面的Appearing事件中手动触发布局刷新,确保真机上布局计算正确。在ViewModel的AppearingCommand中添加以下代码:

MainThread.InvokeOnMainThreadAsync(() =>
{
    (Application.Current.MainPage as NavigationPage).CurrentPage.ForceLayout();
});

总结

优先尝试修改Grid的HorizontalOptions和ContentPage的Padding,这是iOS真机布局偏移最常见的诱因。如果问题依旧,再排查第三方控件和布局结构的兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:02:15