iOS 8使状态栏变黑,而不是半透明

时间:2015-09-24 16:54:36

标签: ios objective-c iphone-6 uistatusbar

所以我的应用中的状态栏目前看起来像这样:

1

我觉得它看起来像这样:

2 http://mojoimage.com/free-image-hosting-12/22iOS7_StatusBar-copy.png

因此它带有白色文字的黑色。目前它并没有在这个特定的屏幕上工作,因为背景不是黑色的。我已经将pList中的Status Bar Style设置为UIStatusBarStyleLightContent

我还要补充一点,View是最初的ViewController,它没有嵌入UINavigationController

编辑:这不是重复,因为大多数其他先前的解决方案已经过时。

3 个答案:

答案 0 :(得分:3)

您可以将其设置为浅,然后在其后面抛出视图。如果您在应用中允许,则还需要考虑设备轮换 的夫特:

override func viewDidLoad() {
    super.viewDidLoad()

    let statusBG = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: 21))
    statusBG.backgroundColor = UIColor.blackColor()
    view.addSubview(statusBG)
}

<强>目标-C:

- (void)viewDidLoad {
    [super viewDidLoad];
    UIView *statusBG = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 21)];
    statusBG.backgroundColor = [UIColor blackColor];
    [self.view addSubview:statusBG];
}

答案 1 :(得分:0)

因为在iOS 6或更早版本中,状态栏不是半透明的,所以最好根据iOS版本执行此操作。在viewDidLoad

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    UIView *statusBarView=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)];
    statusBarView.backgroundColor=[UIColor blackColor];
    [self.view addSubview:statusBarView];
}

其中SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

这将为您提供一个黑色背景和白色文本的状态栏。

答案 2 :(得分:0)

在你的AppDelegate applicationDidFininshLaunchingWithOptions方法中写下代码。这有助于你的所有视图控制器。你不需要在每个视图控制器中添加代码。

[UIApplication sharedApplication].statusBarHidden=NO;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) 
{ 
  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
  [application setStatusBarHidden:NO];
  self.window.clipsToBounds=YES;
  self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}
else
{
  self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
  [application setStatusBarHidden:NO];
  self.window.clipsToBounds=YES;
  self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

然后你的yourprojectName.plist给出

Status bar is initially hidden is NO
View controller-based status bar appearance is YES