【问题标题】:Xamarin Forms - Status bar overlaps the content in IOS (safeareainsets issue)Xamarin Forms - 状态栏与 IOS 中的内容重叠(safeareainsets 问题)
【发布时间】:2018-02-08 03:48:51
【问题描述】:

在 Xamarin 表单中,我正在使用

<ContentPage 
    xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
    ios:Page.UseSafeArea="true" > 

使应用程序 UI 与 iPhone X 兼容,但它仅适用于 iOS 11。有人对如何在所有 iOS 设备上实现此功能提出建议吗?

【问题讨论】:

标签: xamarin xamarin.forms xamarin.ios safearealayoutguide


【解决方案1】:

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

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

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

<ContentPage.Padding>
    <OnPlatform x:TypeArguments="Thickness">
        <On Platform="iOS" Value="0,20,0,0" />
    </OnPlatform>
</ContentPage.Padding>

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

【讨论】:

  • 我也尝试过这个解决方案,但是对于 iphone X 的 Top,padding 20 是不够的,那么如果同时添加两个解决方案(padding 20 和 UseSafeArea),那么 iphone X 的间距就会太大。
猜你喜欢
  • 2016-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 2017-03-10
  • 2013-09-24
  • 2017-10-29
相关资源
最近更新 更多