我得到了一个“旧项目”,并对其进行了修改以支持 iOS8。 在应用程序状态栏中有黑色。
我设置了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];
所以我希望所有 Controller 上都有白色的黑色状态栏。
它适用于大多数情况。但是当我推送一个带有隐藏导航栏的新 VC 时,它会改变颜色,并且在启用导航栏时工作正常。
错误的结果:(当 self.navigationController.navigationBarHidden = YES;
时)
这是我得到的,但导航栏没有隐藏:
我不明白为什么实际上,导航栏的存在会影响状态栏的颜色(样式)。
当 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/