状态栏自定义文本颜色
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]));
当你运行时,你会看到这样的东西:
注意:我不研究改变其他颜色的可能性,但我认为这是真实的。
【讨论】:
以上是关于状态栏自定义文本颜色的主要内容,如果未能解决你的问题,请参考以下文章