当前位置: 首页 > 知识库问答 >
问题:

如何更改iOS7上状态栏背景颜色和文本颜色?

商飞翮
2023-03-14

我当前的应用程序运行在iOS 5和iOS 6上。

导航栏的颜色为橙色,状态栏的背景颜色为黑色,文本颜色为白色。但是,当我在iOS 7上运行相同的应用程序时,我观察到状态栏看起来是透明的,与导航栏的背景颜色相同,并且状态栏文本颜色为黑色。

因此,我无法区分状态栏和导航栏。

如何使状态栏与iOS 5和iOS 6中的状态栏相同,即黑色背景色和白色文本色?如何以编程方式执行此操作?

共有3个答案

微生博简
2023-03-14

1) 在plist中将UIViewControllerBasedStatusBarAppearance设置为YES

2) 在viewDidLoad中执行[self-setNeedsStatusBarAppearanceUpdate]

3) 添加以下方法:

 -(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
 } 

UPDATE:
也检查开发人员指南到ios-7-状态栏

齐鹏程
2023-03-14

转到你的应用程序info.plist1)设置查看基于控制器的状态栏外观NO
2)设置状态栏样式UIStatusBarStyleLightContent然后转到您的应用委托,并将以下代码粘贴到您设置Windows的RootViewController的位置。

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

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

希望能有帮助。

桂鑫鹏
2023-03-14

警告:它不再适用于iOS 13和Xcode 11。

========================================================================

我不得不试着寻找其他方法。其中不涉及窗口上的addSubview。因为当键盘出现时,我正在向上移动窗口。

- (void)setStatusBarBackgroundColor:(UIColor *)color {

    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
        statusBar.backgroundColor = color;
    }
}
func setStatusBarBackgroundColor(color: UIColor) {

    guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
        return
    }

    statusBar.backgroundColor = color
}
func setStatusBarBackgroundColor(color: UIColor) {

    guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }

    statusBar.backgroundColor = color
}

调用此表单应用程序:didFinishLaunchingWithOptions对我有效。

N. B.我们在应用商店中有一个应用程序具有这种逻辑。所以我想应用商店政策是可以接受的。

编辑:

使用风险自负。在sebydd处形成评论

我有一个应用程序被拒绝的原因,而另一个被接受只是罚款。他们确实认为这是私有的API使用,所以你在审查过程中受到运气:)-Sebyddd

 类似资料:
  • 我当前的应用程序运行在iOS 4.2、5和6上。 导航栏为橙色,状态栏为黑色背景色。然而,当我在iOS 7上运行相同的应用程序时,我观察到状态栏看起来是透明的,与导航栏的背景颜色相同。 因此,我无法区分状态栏和导航栏。如何使状态栏与iOS 5和iOS 6中的状态栏相同,即黑色背景色和白色文本色?我如何通过编程实现这一点? 我在谷歌上搜索了一下,发现一个建议,我必须添加一个黑色背景,大约20像素高的

  • 随着13iOS状态的到来,酒吧的视图不再通过槽访问: 由于: 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因是:“UIApplication上调用了-statusBar或-statusBarWindow的应用程序:由于不再有状态栏或状态栏窗口,必须更改此代码。”。“请使用“场景”窗口上的状态栏。” 但是不清楚它应该如何用于更改颜色,因为似乎

  • 我对这一切都不熟悉。我到处寻找这个小问题的解决办法。有没有办法改变状态栏的颜色?当我使用a色的时候,我也喜欢a色。蓝色我可以看到状态栏中的文本质量不好。 谢谢

  • 问题内容: 在XCode 7.3.x中,我用以下方法更改了StatusBar的背景颜色: 但是似乎这在Swift 3.0中不再起作用。 病态尝试: 但这给了我: 有任何想法如何使用XCode8 / Swift 3.0进行更改吗? 问题答案: extension UIApplication { var statusBarView: UIView? { if responds(to: Selector

  • 我正在使用RangeSeekBar为3种情况设置一些值(即绿色=OK,琥珀色=警告,红色=撤离)...我正在使用xml绘图来设置背景 我知道我可以通过编程更改渐变,但如何缩小起始颜色并增加结束颜色?有人能解决这个问题吗? 谢谢

  • 问题内容: 我的应用程序具有深色背景,但是在iOS 7中状态栏变为透明的。所以我看不到任何东西,只有角落的绿色电池指示灯。如何将状态栏文本颜色更改为白色,就像在主屏幕上一样? 问题答案: 将要在文件的.plist。 在做一个 添加以下方法: { return UIStatusBarStyleLightContent; } 注意 :这不适用于内部控制器,请参阅下面的Tyson评论:) Swift 3