如何在加载视图后自动隐藏状态栏

时间:2012-07-07 05:08:08

标签: ios uistatusbar

人, 我想隐藏代码中的状态栏。加载视图后,状态栏将显示,并在一段时间后自动隐藏。怎么做?

4 个答案:

答案 0 :(得分:3)

您想要UIApplication的{​​{1}}

setStatusBarHidden:withAnimation:

请参阅the docs

答案 1 :(得分:0)

尚未对其进行测试,可能有更好的方法,但如果您将以下内容放入加载视图功能中:

[self performSelector:@selector(hideNavBar) withObject:nil afterDelay:0.0];

然后有这个功能

-(void) hideNavBar {
    if (self.navigationController.navigationBar.hidden == NO)
    {
        [self.navigationController setNavigationBarHidden:YES animated:YES];
    }
}

您可能必须隐藏视图动画块中的导航栏。但有些组合应该有效

退房 link

答案 2 :(得分:0)

当appDidBecommeActive(“加载视图后”)时,您可以在AppDelegate中执行此操作。 使用UIView动画块在400ms后设置隐藏状态并计算根视图控制器的导航栏

// AppDelegate.m

#import "AppDelegate.h"
#import "SomeViewController.h"

@interface AppDelegate ()
@property (nonatomic, strong) SomeViewController *someViewController;
@end

@implementation AppDelegate

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    UINavigationBar *navBar = self.someViewController.navigationController.navigationBar;
    if (![[UIApplication sharedApplication] isStatusBarHidden]) {
       [[UIApplication sharedApplication] setStatusBarHidden:YES
                                               withAnimation:UIStatusBarAnimationSlide];
       [UIView animateWithDuration:0.4
                        animations:^{
                            navBar.frame = CGRectMake(navBar.frame.origin.x, 0, navBar.frame.size.width, navBar.frame.size.height);
                     } completion:nil];
    }
}

@end

就是这样,“在加载视图(didBecomeActive)之后,状态栏将显示,并且它会在一段时间后自动隐藏(400ms)”

答案 3 :(得分:0)

您必须选择项目并在标题常规,Hide during application launch部分中选择Deployment Info,如下所示:

enter image description here

在info.plist中,将View controller-based status bar设置为NO:

enter image description here