在Xamarin.Forms页面中隐藏iPhone X的主页指示器

时间:2019-02-18 08:40:35

标签: c# ios xamarin xamarin.forms

如何在Xamarin.Forms应用程序中隐藏主页指示器?看来我需要获取Forms应用程序的根UIViewControler并以某种方式覆盖PrefersHomeIndicatorAutoHidden才能返回true。但我无权访问该根UIViewControler ...

您是否有任何想法如何在Xamarin.Forms应用程序中隐藏Home Indicator?

2 个答案:

答案 0 :(得分:1)

您应该能够简单地创建一个自定义渲染器并覆盖此属性。

类似这样的东西:

[assembly: ExportRenderer(typeof(MyPage), typeof(HomeIndicatorRenderer))]
namespace MyApp
{ 
    public class HomeIndicatorRenderer : PageRenderer
    {
        public override bool PrefersHomeIndicatorAutoHidden => true;

        public override void ViewDidAppear(bool animated)
        {
            base.ViewDidAppear(animated);
            SetNeedsUpdateOfHomeIndicatorAutoHidden();
        }
    }
}

您可能应该检查一下该版本是否为iOS 11或更高版本。

但是正如已经指出的那样,您可能要对此小心。而且我认为Apple文档甚至声明该设置可以被操作系统随意忽略。

答案 1 :(得分:1)

我在Xamarin.Forms.Page之后的InitializeComponent()的构造函数中使用它:

using Xamarin.Essentials;
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
// ...

if (Device.RuntimePlatform == Device.iOS &&  
    DeviceInfo.Version.Major > 11)
{
    On<iOS>().SetPrefersHomeIndicatorAutoHidden(true);
}

基于SO thread

我的用例是在iOS模拟器中为App Store创建干净的屏幕截图。