ios - 在遗留项目中保留黑色状态栏

标签 ios objective-c iphone ios8

我得到了一个“旧项目”,并对其进行了修改以支持 iOS8。 在应用程序状态栏中有黑色。

我设置了View controller-based status bar appearanceNO和状态栏样式为黑色不透明 Info.plist .

这是AppDelegate.m的一部分文件:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
      application.statusBarStyle = UIStatusBarStyleLightContent;
    }

    application.statusBarHidden = NO;

   UIImage *navBarImage = [[UIImage imageNamed:@"navigation-bar"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9, 0, 9)];

   [[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault]; 

所以我希望所有 Controller 上都有白色的黑色状态栏。

它适用于大多数情况。但是当我推送一个带有隐藏导航栏的新 VC 时,它会改变颜色,并且在启用导航栏时工作正常。

错误的结果:(当 self.navigationController.navigationBarHidden = YES; 时)

Wrong results, status bar translucent and has white color

这是我得到的,但导航栏没有隐藏:

Correct results,but with navigation bar visible, status bar has black color

我不明白为什么实际上,导航栏的存在会影响状态栏的颜色(样式)。

当 VC 显示(推送到导航堆栈)并隐藏导航栏时,如何在 iOS7(8) 上使状态栏变黑?

最佳答案

创建一个 View ,将它放在状态栏所在的位置,然后将其背景颜色设置为您需要的任何颜色。例如:

UIView *statusBarView = [[UIView alloc]initWithFrame:CGRectMake(0, 0,
                        [UIApplication sharedApplication].statusBarFrame.size.width,
                        [UIApplication sharedApplication].statusBarFrame.size.height)];
statusBarView.backgroundColor  =  [UIColor blackColor]; // Set color
[self.view addSubview:statusBarView];

关于ios - 在遗留项目中保留黑色状态栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809825/

相关文章:

ios - 添加多个 subview 时 ScrollView 不滚动

ios - Swift - 来自 URL 的 UILabel

ios - Objective-C : View PDF File Link With UIWebView

ios - 使用 iOS 10.2 版在同一设备上获取不同的 UUID

iphone - 如何在 iPhone 应用程序中与 Modbus 设备通信?

ios - 使用 iTunes Analytics 跟踪 Facebook 应用安装广告的转化

ios - 图像比例 AF 网络

ios - ZoomToRect后新CGRect的UIScrollview计算

ios - 如何将 UIScrollView 中的内容设置在中间,以便用户可以在 iOS 中左右滚动

iPhone + stringWithUTF8String + 内存泄漏