我有一个"旧项目",并修改它以支持iOS8。 在app状态栏中有黑色。
我将View controller-based status bar appearance
设置为NO
,状态栏样式设置为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];
所以我希望所有控制器上都有白色的黑色状态栏。
它适用于大多数情况。但是当我推动一个新的VC时,它会隐藏导航栏,它会改变颜色,并且在启用导航栏时工作正常。
错误的结果:(当self.navigationController.navigationBarHidden = YES;
)
这是我得到的,但导航栏没有隐藏:
我实际上并不明白,导航栏的存在会影响状态栏的颜色(样式)。
当使用隐藏的导航栏显示VC(推入导航堆栈)时,如何在iOS7(8)上将状态栏设置为黑色?
答案 0 :(得分:1)
创建一个视图,将其放在状态栏所在的位置,并将其背景颜色设置为所需的颜色。例如:
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];