【问题标题】:How to hide status bar for specific viewcontroller in ios 9, using objective-C如何使用objective-C在ios 9中隐藏特定视图控制器的状态栏
【发布时间】:2016-04-23 06:19:20
【问题描述】:

我想隐藏特定视图控制器的状态栏,而不是全部。 然后我尝试了这个,

[[UIApplication sharedApplication] setStatusBarHidden:YES]; in the `.AppDelegate.m` inside the `didfinishlaunchwithoption`  but it didn't work. and also it is deprecated.

然后我在我的视图控制器中尝试了

- (BOOL) prefersStatusBarHidden{
    return YES;
}

这也没有用。任何人都可以帮我解决这个问题。thnak 你 我不想在这里使用任何已弃用的方法

【问题讨论】:

  • 你的问题解决了吗?
  • 不,兄弟@DianaProdan 没有为我工作,尝试了所有。你有什么想法吗?
  • 我从 .plist 'View controller-based status bar appearance 字段中删除,并在需要隐藏状态栏的控制器中添加 - (BOOL) prefersStatusBarHidden{ return YES; }。成功了

标签: ios objective-c statusbar


【解决方案1】:

转到 info.plist 并添加两个属性(如果不存在)。将“状态栏最初隐藏”设置为“YES”并将“UIViewControllerBasedStatusBarAppearance”设置为“YES”。这将隐藏您应用的状态栏。

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

并在你想要的地方调用这个方法,例如从 viewDidLoad

[self prefersStatusBarHidden];

【讨论】:

  • 这适用于隐藏状态栏。但在特定视图控制器中显示状态栏不起作用。无论如何,谢谢
  • @Graham 检查已编辑的答案,这对我来说是完美的,只需将“UIViewControllerBasedStatusBarAppearance”更改为“YES”,其他的也一样。
【解决方案2】:

我想隐藏特定视图控制器的状态栏,而不是全部。

只有 顶级 视图控制器才能说明状态栏是​​否隐藏。您的prefersStatusBarHidden 没有被咨询,因为您的视图控制器不是顶级视图控制器——它有某种负责状态栏的父视图控制器。

【讨论】:

    【解决方案3】:

    在您的视图控制器中尝试以下代码。
    在没有贬损警告的情况下尝试以下方法:

    - (void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
    
    }
    
    - (void)viewWillDisappear:(BOOL)animated{
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
        [super viewWillDisappear:animated];
    }
    

    iOS 9 更新
    在 viewController 中添加以下代码来隐藏状态栏。

    - (BOOL) prefersStatusBarHidden {
        return YES;
    }
    

    【讨论】:

    • setStatusBarHidden(_:withAnimation:) 在 iOS 9 中已弃用。
    【解决方案4】:
    Try below code in your view controller.
    
    - (void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    
    }
    
    - (void)viewWillDisappear:(BOOL)animated{
        [[UIApplication sharedApplication] setStatusBarHidden:NO];
        [super viewWillDisappear:animated];
    }
    

    【讨论】:

    • [[UIApplication sharedApplication] setStatusBarHidden:YES]此方法已弃用。
    【解决方案5】:

    将以下代码添加到您的视图控制器..

     - (BOOL)prefersStatusBarHidden {
    
       return NO;
    }
    

    如果更改此方法的返回值,请调用 setNeedsStatusBarAppearanceUpdate 方法。

    对于 childViewController,要指定子视图控制器应控制首选状态栏隐藏/取消隐藏状态,请实现 childViewControllerForStatusBarHidden 方法。

    【讨论】:

    • prefersStatusBarHidden 没有被调用
    • prefersStatusBarHidden方法中返回命令后无法调用setNeedsStatusBarAppearanceUpdate
    猜你喜欢
    • 2016-05-03
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 2015-04-09
    • 2014-02-21
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    相关资源
    最近更新 更多