参考:
https://www.jianshu.com/p/e57715cf2f8a
一. 设置全局控制器状态栏样式
1.取消控制器管理状态栏样式,在Supporting Files下的Info.plist添加一个属性设置
value: NO```  2.通过UIApplication来管理统一管理状态栏的样式,设置如下: `UIApplication.shared.statusBarStyle = .lightContent` ####二. 设置局部控制器状态栏样式 新建项目默认通过局部控制器状态栏样式来管理,所以info.plist不需要做任何设置 1.如果只是`UIViewController`的话,只需要重写`preferredStatusBarStyle`方法
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
2.如果`UIViewController`存在`UINavigationController`,需要在自定义`NavigationController`中重写`preferredStatusBarStyle`方法
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
3.如果`UIViewController`存在`UINavigationController`,又想要通过`rootViewController`来控制`UIStatusBarStyle`,则需要在自定义`NavigationController`重写`childViewControllerForStatusBarStyle`方法
override var childViewControllerForStatusBarStyle: UIViewController?{
return self.topViewController
}
return self.topViewController
}
在`rootViewController`重写`preferredStatusBarStyle`方法
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
4. 对于有导航栏的VC只用拓展也阔以,效果 = 方法3
extension UINavigationController { /// 设置导航栏背景颜色 /// /// - Parameter color: 设置的颜色 func setNavBarBackGroundColor(color: UIColor) { self.navigationBar.barTintColor = color /// if color == UIColor.white{ self.navigationBar.barStyle = .default }else if color == main_tinColor{ self.navigationBar.barStyle = .black } }
5. 但是 如果某个VC隐藏了导航栏
直接使用 代码就会生效
override var preferredStatusBarStyle: UIStatusBarStyle{ return .lightContent }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2018-07-09 runloop - CFRunLoopObserverRef
2018-07-09 runloop 和 CFRunLoop - 定时器 - NSTimer 和 GCD定时器