Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 触发View.OnAppearing时,安全区域插入为0_Xamarin.forms_Xamarin.ios_Safearea - Fatal编程技术网

Xamarin.forms 触发View.OnAppearing时,安全区域插入为0

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

我正在做一些手动定位,需要考虑ios上的安全区域

我遇到的问题是,当我使用OnAppearing方法时,SafeAreaInserts方法返回的厚度值为0。旋转设备后(在SizeChanged事件中),情况不再如此。由于SizeChanged在进入视图时不会被触发,因此我找不到设置SafeAreaInsets时引发的事件

var safeInsets=On().SafeAreaInsets()


在中,我发现更改的SafeAreaInsert的事件会在“稍后”触发,但我的共享Xamarin.Forms项目中似乎没有可用的事件。

对于
ViewSafeAreaInsetsDidChange
方法,它会从页面渲染器调用。您可以覆盖默认的iOS
PageRenderer
,并连接到
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();
}
要了解更多详细信息,您可以查看下面的链接