Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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 如何获得安全区域厚度?_Xamarin.forms - Fatal编程技术网

Xamarin.forms 如何获得安全区域厚度?

Xamarin.forms 如何获得安全区域厚度?,xamarin.forms,Xamarin.forms,我想在屏幕顶部放置一个图像 所以我试着做了最上面的安全区域插图 var safeArea=On<Xamarin.Forms.PlateformConfiguaration.iOS>().SafeAreaInsets(); safeArea.Top=-safeArea.Top; Image.Margin=safeArea; var safeArea=On().SafeAreaInsets(); safeArea.Top=-safeArea.Top; Image.Margin=安全区域

我想在屏幕顶部放置一个图像

所以我试着做了最上面的安全区域插图

var safeArea=On<Xamarin.Forms.PlateformConfiguaration.iOS>().SafeAreaInsets();
safeArea.Top=-safeArea.Top;
Image.Margin=safeArea;
var safeArea=On().SafeAreaInsets();
safeArea.Top=-safeArea.Top;
Image.Margin=安全区域;
但所有安全区域属性都为0


要获得正确的厚度,请点击“热”按钮?

首先,iOS 11.0之后才提供安全区域,因此您应该先检查iOS的版本,然后再购买

我建议您可以使用DependencyService

在窗体中,创建接口 在iOS中 并根据需要调用该方法

var top = DependencyService.Get<IGetSafeArea>().GetSafeAreaTop();
var-top=DependencyService.Get().GetSafeAreaTop();

您的代码在我这边运行良好。你把这个方法叫到哪里去了?您可以提供一个包含问题的示例,我会检查它。您好@LucasZhang MSFT我在OnAppeared方法中调用它是否有错?您可以检查我的答案,我在
onAppearing
中调用代码,它工作正常。因此,如果我的答案仍然无效,您可以提供示例。我这样做了,但它告诉我对象引用未设置为对象的实例。使用代码“DependencyService.Get()”,它似乎无法获取接口。我在ios和androidYou中创建了该方法。你应该在窗体中创建接口,并在contentpage中调用它。选中“是”,我在窗体中创建了接口,并在contentpage中调用了它。但它确实失败了。我不知道为什么
using UIKit;

using xxx;

namespace xxx.iOS
{
    public class GetSafeArea : IGetSafeArea
    {
        public double GetSafeAreaBottom()
        {
            if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
            {
                UIWindow window = UIApplication.SharedApplication.Delegate.GetWindow();              
                var bottomPadding = window.SafeAreaInsets.Bottom;
                return bottomPadding;
            }
            return 0;
        }

        public double GetSafeAreaTop()
        {
            if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
            {
                UIWindow window = UIApplication.SharedApplication.Delegate.GetWindow();
                var topPadding = window.SafeAreaInsets.Top;
                return topPadding;
            }
            return 0;
        }
    }
}
var top = DependencyService.Get<IGetSafeArea>().GetSafeAreaTop();