更改初始视图后如何加载状态栏

Posted

技术标签:

【中文标题】更改初始视图后如何加载状态栏【英文标题】:how to load status bar after changing initial view 【发布时间】:2016-02-29 12:32:07 【问题描述】:

显示我的 ArticlesViewController 时出现问题。这段代码很好用,但是当出现文章页面时,没有状态栏。 我认为导航控制器有问题,所以我尝试添加

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

在 AppDelegate 的 didFinishLaunchingWithOptions 和 ArticlesViewController 的 viewDidLoadviewWillAppear 中,还是没有结果

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    NSManagedObjectContext *context = [self managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Entity"];
    localStorage = [[context executeFetchRequest:fetchRequest error:nil] mutableCopy];
    NSObject *obj = [localStorage valueForKey:@"isAppLaunchedOnce"];
    NSString *condition = [[[obj description] componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] componentsJoinedByString:@""];
    NSCharacterSet *unwantedChars = [NSCharacterSet characterSetWithCharactersInString:@"\"()"];
    condition = [[condition componentsSeparatedByCharactersInSet:unwantedChars] componentsJoinedByString:@""];

    if ([condition isEqual: @"YES"])
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *rootViewController = (ArticlesViewController*)[storyboard instantiateViewControllerWithIdentifier:@"ArticlesViewController"];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
    self.window.rootViewController = rootViewController;
    if (NSFoundationVersionNumber > NSFoundationVersionNumber_ios_6_1)
    navController.navigationBar.tintColor = [UIColor whiteColor];
    navController.navigationItem.titleView.tintColor = [UIColor whiteColor];
    NSDictionary *titleAttributes = @
    NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:14.0],
    NSForegroundColorAttributeName:[UIColor whiteColor]
    ;
    navController.navigationBar.titleTextAttributes = titleAttributes;
    
    [self.window makeKeyAndVisible];
    
    // Override point for customization after application launch.
    return YES;
    

【问题讨论】:

如果你有一个主故事板,为什么要在代码中创建导航控制器和文章视图控制器? @matt 据我了解,我没有创建 ArticlesViewController,我从情节提要中获取此控制器,然后在应用程序中更改我的 initialViewController。如果您认为我可以使用我现有的导航控制器 - 问我如何,它可能是一个答案 【参考方案1】:

ArticlesViewController中添加如下方法试试看。

- (BOOL)prefersStatusBarHidden

    return NO;

如果你没有在plist中设置那么你需要为每个控制器设置。

您也可以通过在didFinishLaunchingWithOptions: 中添加以下行来设置

[[UIApplication sharedApplication] setStatusBarHidden:NO];

检查 plist 文件中的这些键并将状态栏初始隐藏也设置为 NO

【讨论】:

我将此行添加到我的 appDelegate 并将状态栏设置为默认,但它不显示栏

以上是关于更改初始视图后如何加载状态栏的主要内容,如果未能解决你的问题,请参考以下文章

更改状态栏的背景颜色

如何使用 swift 在特定视图中更改状态栏颜色?

关闭模态视图后的状态栏和导航栏问题

如何使用 swift 在一个视图控制器中更改状态栏颜色?

视图更改时反应导航和状态栏颜色闪烁

在 iPhone 上切换应用时更改状态栏颜色的问题