Xamarin Forms - 状态栏与 IOS 中的内容重叠(safeareainsets 问题)
Posted
技术标签:
【中文标题】Xamarin Forms - 状态栏与 IOS 中的内容重叠(safeareainsets 问题)【英文标题】:Xamarin Forms - Status bar overlaps the content in IOS (safeareainsets issue) 【发布时间】: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 设备上实现此功能提出建议吗?
【问题讨论】:
***.com/questions/47779937/… 可能会有所帮助。 【参考方案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 的间距就会太大。以上是关于Xamarin Forms - 状态栏与 IOS 中的内容重叠(safeareainsets 问题)的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Forms - IOS - 汉堡菜单标题颜色与状态栏不同
Xamarin.Forms iOS - 当设备连接互联网时开始上传数据,即使应用程序当前未处于活动状态或处于后台也是如此
Xamarin.forms(或)xamarin.ios/xamarin.android(或)本机
Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?