Xamarin.forms 触发View.OnAppearing时,安全区域插入为0
我正在做一些手动定位,需要考虑ios上的安全区域 我遇到的问题是,当我使用OnAppearing方法时,SafeAreaInserts方法返回的厚度值为0。旋转设备后(在SizeChanged事件中),情况不再如此。由于SizeChanged在进入视图时不会被触发,因此我找不到设置SafeAreaInsets时引发的事件 var safeInsets=On().SafeAreaInsets()Xamarin.forms 触发View.OnAppearing时,安全区域插入为0,xamarin.forms,xamarin.ios,safearea,Xamarin.forms,Xamarin.ios,Safearea,我正在做一些手动定位,需要考虑ios上的安全区域 我遇到的问题是,当我使用OnAppearing方法时,SafeAreaInserts方法返回的厚度值为0。旋转设备后(在SizeChanged事件中),情况不再如此。由于SizeChanged在进入视图时不会被触发,因此我找不到设置SafeAreaInsets时引发的事件 var safeInsets=On().SafeAreaInsets() 在中,我发现更改的SafeAreaInsert的事件会在“稍后”触发,但我的共享Xamarin.For
在中,我发现更改的SafeAreaInsert的事件会在“稍后”触发,但我的共享Xamarin.Forms项目中似乎没有可用的事件。对于
ViewSafeAreaInsetsDidChange
方法,它会从页面渲染器调用。您可以覆盖默认的iOSPageRenderer
,并连接到ViewSafeAreaInsetsDidChange
覆盖
public override void ViewSafeAreaInsetsDidChange()
{
var page = (Element as Page);
if (page != null && Forms.IsiOS11OrNewer)
{
var insets = NativeView.SafeAreaInsets;
if(page.Parent is TabbedPage)
{
insets.Bottom = 0;
}
page.On<PlatformConfiguration.iOS>().SetSafeAreaInsets(new Thickness(insets.Left, insets.Top, insets.Right, insets.Bottom));
}
base.ViewSafeAreaInsetsDidChange();
}
public override void viewsafearesinsetsdidchange()
{
var page=(元素作为页面);
if(page!=null&&Forms.IsiOS11OrNewer)
{
var insets=NativeView.SafeAreaInsets;
如果(page.Parent是TabbedPage)
{
插图。底部=0;
}
page.On().SetSafeAreaInsets(新厚度(插图左侧、插图顶部、插图右侧、插图底部));
}
base.viewsafearesinsetsdidchange();
}
要了解更多详细信息,您可以查看下面的链接