状态栏自定义文本颜色

Posted

技术标签:

【中文标题】状态栏自定义文本颜色【英文标题】:Status bar custom text color 【发布时间】:2017-04-27 11:05:41 【问题描述】:

除了默认的白色和黑色之外,是否可以更改状态栏文本颜色?比如变红?

我的应用面向 ios10,所以我支持最新的 iOS SDK。

【问题讨论】:

只需设置工具栏色调颜色及其工作 你能给我一个示例代码吗? 查看这个答案***.com/questions/19063365/… ***.com/a/34658477/6656894 看到这个 文本颜色不可能,因为系统只允许 2 色光内容表示白色或默认表示黑色。 【参考方案1】:

恐怕不会。我们只有两种模式:

public enum UIStatusBarStyle : Int 


    case `default` // Dark content, for use on light backgrounds

    @available(iOS 7.0, *)
    case lightContent // Light content, for use on dark backgrounds

您可以在How to change Status Bar text color in iOS 7找到更多信息

【讨论】:

【参考方案2】:

这样试试吧!

 func setStatusBarBackgroundColor(color: UIColor) 

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

        statusBar.backgroundColor = color
    

【讨论】:

我想改变 textColor 而不是背景颜色【参考方案3】:

根据苹果文档,没有更改状态栏颜色的方法,但是您可以在屏幕顶部添加视图并设置该视图的背景颜色。

【讨论】:

【参考方案4】:

如您所见,您可以使用私有框架更改状态栏背景颜色。我花了一些时间来调查能够更改文本颜色。这在 Objective C 运行时是可能的。但我认为苹果不喜欢这样。你可以修改你的 main.c 看起来像这样

#import <UIKit/UIKit.h>
#import <objc/runtime.h>
#import "AppDelegate.h"

id testMethod(id object, SEL selector, NSUInteger style)

  return [UIColor colorWithRed:1 green:0 blue:0 alpha:1];


int main(int argc, char * argv[]) 
  @autoreleasepool 
    BOOL result = class_replaceMethod(NSClassFromString(@"UIStatusBarForegroundStyleAttributes"), @selector(textColorForStyle:), testMethod, "@24@0:8q16");
      return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
  

当你运行时,你会看到这样的东西:

注意:我不研究改变其他颜色的可能性,但我认为这是真实的。

【讨论】:

以上是关于状态栏自定义文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

自定义 iOS 7 状态栏文本颜色

android中的默认状态栏文本颜色

MAUI Blazor踩坑日记3.Windows标题栏自定义颜色,运行时改变颜色

iOS NavigationBar 导航栏自定义

Flutter导航栏自定义效果

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