Вы должны использовать пользовательские UINavigationController вместо одной системы, как этот образец:
В AppDelegate.cs:
UINavigationController navController;
UIWindow window;
public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
{
navController = new UINavigationController (new TestViewCtonroller());
// create a new window instance based on the screen size
window = new UIWindow (UIScreen.MainScreen.Bounds);
window.RootViewController = navController;
window.MakeKeyAndVisible();
return true;
}
MyNavigationController.cs:
public class MyNavigationController : UINavigationController
{
public MyNavigationController (UIViewController rootController) : base(rootController)
{
}
public override UIViewController ChildViewControllerForStatusBarHidden()
{
return TopViewController;
}
public override UIViewController ChildViewControllerForStatusBarStyle()
{
return TopViewController;
}
}
TestViewCtonroller.cs :
public class TestViewCtonroller : UIViewController
{
public TestViewCtonroller()
{
this.View.BackgroundColor = UIColor.Red;
}
public override UIStatusBarStyle PreferredStatusBarStyle()
{
return UIStatusBarStyle.LightContent;
}
public override bool PrefersStatusBarHidden()
{
return true;
}
}
Надеюсь, это может вам помочь.
Использует ли ваше приложение 'NavigationPage'? Если 'UIViewController', созданный PageRenderer, встроен в' UINavigationController', тогда 'UINavigationController' может не использовать ваш' PrefersStatusBarHidden'. Можете ли вы, чтобы ваш «PrefersStatusBarHidden» был вызван? – dylansturg
Да, он использует навигационную страницу. Нет, 'PrefersStatusBarHidden' не вызывается :( –
Я предполагаю, что ваш' UINavigationController' не перенаправляет 'PrefersStatusBarHidden' - я бы попытался использовать пользовательский класс, который подклассифицирует' UINavigationController' и переопределяет 'PrefersStatusBarHidden', он может просто сделайте что-то простое, как call 'return TopViewController.PrefersStatusBarHidden();'. – dylansturg