Xamarin Forms - 状态栏与 IOS 中的内容重叠(safeareainsets 问题)

use*_*104 0 xamarin.ios xamarin xamarin.forms safearealayoutguide

在 Xamarin Forms 中,我使用

<ContentPage 
    xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
    ios:Page.UseSafeArea="true" > 
Run Code Online (Sandbox Code Playgroud)

使应用程序 UI 与 iPhone X 兼容,但它只能在 iOS 11 中工作。有人对如何在所有 iOS 设备上工作有建议吗?

Pau*_*her 6

安全区域的概念是 iPhone X 独有的,因此也是 iOS 11+ 独有的。无论如何,默认情况下,应用程序使用整个手机屏幕(而不是 Android),因此,如果显示状态栏(如果需要,您可以隐藏它,但这是另一回事),您的应用程序将与它重叠。

Xamarin.FormsNavigationPage将自动适应可用区域(其他人也可能如此),但ContentPage例如,如果您使用的是裸机,则必须自己处理。

为了在不同平台上以不同方式处理事情OnPlatform,XAML 中有标记(请参阅此处)。有了它,您可以将平台相关的填充添加到您的ContentPage

<ContentPage.Padding>
    <OnPlatform x:TypeArguments="Thickness">
        <On Platform="iOS" Value="0,20,0,0" />
    </OnPlatform>
</ContentPage.Padding>
Run Code Online (Sandbox Code Playgroud)

这将防止您的页面与状态栏重叠。

  • 我也尝试过这个解决方案,但是 iphone X 的顶部填充 20 是不够的,那么如果添加了两个解决方案(填充 20 和 UseSafeArea),那么 iphone X 将有太多的间距。 (2认同)