下面的代码可以工作,但已经过时了。我正在寻找更好的解决方案。
UIApplication.SharedApplication.SetStatusBarHidden(shouldBeFullScreen, animation: UIKit.UIStatusBarAnimation.Fade);
我需要使用UIViewController PrefersStatusBarHidden();
我试过:
UIWindow window = UIApplication.SharedApplication.Delegate.GetWindow();
var vc = window?.RootViewController ?? WindowStateManager.Default.GetCurrentUIViewController() ?? throw new InvalidOperationException($"{nameof(window.RootViewController)} cannot be null");
while (vc.PresentedViewController is not null)
{
vc = vc.PresentedViewController;
}
vc.PrefersStatusBarHidden();
vc.SetNeedsStatusBarAppearanceUpdate();
上面的代码确实抓取了窗口,但实际上并没有隐藏状态栏。
我也试过:
Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific.Page.SetPrefersStatusBarHidden(currentPage, item);
任何建议将不胜感激。我正在为社区工具包的媒体元素中实现全屏控制,我被困在IOS中隐藏状态栏。
2条答案
按热度按时间noj0wjuj1#
将以下行添加到info.plist文件中。右键点击info.plist,选择【打开方式】,然后选择【源代码】
gpnt7bae2#
prefersStatusBarHidden是UIViewController的虚方法,需要在当前UIViewController中重写,才能更改状态栏。一种方法是为该页面创建一个新的UIViewController,但这意味着您必须以本机方式编写所有控件。这可能会引起更多的麻烦。
或者你可以参考这个线程:iOS PageRenderer compatibility not rendering page content和PureWeen评论道。下面是一个简单的演示:
在iOS文件夹中,您可以创建一个继承PageHandler的HideStatusBarPageHandler。
在MauiProgram.cs中,添加处理程序:
然后,当您获得当前ViewControl时,您可以通过更改IsStatusBarHidden属性来控制状态栏的显示或隐藏。
希望能成功。