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();