2016-08-12 5 views
0

Можно ли скрыть строку состояния в PageRenderer?Скрыть строку состояния в iOS от PageRenderer

Я попытался установить их в Info.plist

<key>UIStatusBarHidden</key> 
<true/> 
<key>UIViewControllerBasedStatusBarAppearance</key> 
<true/> 

И тогда переопределение PrefersStatusBarHidden в PageRenderer в

public override bool PrefersStatusBarHidden() 
{ 
    return true; 
} 

Если установить UIViewControllerBasedStatusBarAppearance в Info.plist к false, она спрятана на всех страницах.

Как это исправить?

+0

Использует ли ваше приложение 'NavigationPage'? Если 'UIViewController', созданный PageRenderer, встроен в' UINavigationController', тогда 'UINavigationController' может не использовать ваш' PrefersStatusBarHidden'. Можете ли вы, чтобы ваш «PrefersStatusBarHidden» был вызван? – dylansturg

+0

Да, он использует навигационную страницу. Нет, 'PrefersStatusBarHidden' не вызывается :( –

+0

Я предполагаю, что ваш' UINavigationController' не перенаправляет 'PrefersStatusBarHidden' - я бы попытался использовать пользовательский класс, который подклассифицирует' UINavigationController' и переопределяет 'PrefersStatusBarHidden', он может просто сделайте что-то простое, как call 'return TopViewController.PrefersStatusBarHidden();'. – dylansturg

ответ

1

Вы должны использовать пользовательские 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; 
    } 
} 

Надеюсь, это может вам помочь.

Смежные вопросы