Создайте собственное средство визуализации, чтобы написать свой собственный safeAreaInsets
, а затем назначьте его Page.Padding
. Здесь используйте задержку 200 мс, чтобы дождаться инициализации UIApplication.SharedApplication.KeyWindow
.
[assembly: ExportRenderer(typeof(CustomPage), typeof(CustomPageRenderer))]
namespace App19F_8.iOS
{
public class CustomPageRenderer : PageRenderer
{
public CustomPageRenderer()
{
}
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
var inset = new Thickness();
Device.StartTimer(new TimeSpan(200), () =>
{
Device.BeginInvokeOnMainThread(() =>
{
if (UIApplication.SharedApplication.KeyWindow != null)
{
if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
{
var safeAreaInsets = UIApplication.SharedApplication.KeyWindow.SafeAreaInsets;
inset.Top = safeAreaInsets.Top;
inset.Bottom = safeAreaInsets.Bottom;
inset.Left = safeAreaInsets.Left;
inset.Right = safeAreaInsets.Right;
}
}
ContentPage page = e.NewElement as ContentPage;
page.Padding = inset;
});
return false;
});
}
}
}
}
. В вашем проекте Xamarin.forms сделайте страницу в вашем CarouselPage
наследуемой от CustomPage
.