iOS 两种方式设置状态栏
1、ios9.0以前设置状态栏字体颜色
///白色
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
///黑色
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault];
会看到如下提示:
'setStatusBarStyle:' is deprecated: first deprecated in iOS 9.0 - Use -[UIViewController preferredStatusBarStyle]
1
注意:1、该方法在9.0后就废弃了,需要使用在preferredStatusBarStyle方法中实现
2、setStatusBarStyle设置状态栏颜色,我们需要在plist中添加
View controller-based status bar appearance —>NO
3、⚠️划重点:上面这个属性会影响 preferredStatusBarStyle的,
4、所以你在使用preferredStatusBarStyle来实现时,该值需要设置为YES,否则不生效
5、⚠️也就是说View controller-based status bar appearance 值为NO使用
setStatusBarStyle生效,为YES时preferredStatusBarStyle生效,一定要注意啦
2、iOS9.0以后使用如下方式:
- (UIStatusBarStyle)preferredStatusBarStyle {
//1:白色 0:黑色
if (self.vcFlag == 1) {
return UIStatusBarStyleLightContent;
}else {
if (@available(iOS 13.0, *)) {
return UIStatusBarStyleDarkContent;
} else {
return UIStatusBarStyleDefault;
}
}
}
注意:View controller-based status bar appearance 为YES
要想在页面滑动时,状态栏字体颜色会随着变黑或白色,flag我们已经添加,只要让其主动调用该方法
///会自动调用preferredStatusBarStyle方法,只要加上相关判断即可
[self setNeedsStatusBarAppearanceUpdate];
这里必须注意:设置状态栏的时候,首先分为两种情况,其一:在plist里面设置了View controller-based status bar appearance为NO,这个属性的意义就是不让控制器基于status bar appearance的设置,也就是自己可以在每一个控制器里面自己进行设置。这个时候就不能再用
- (UIStatusBarStyle)preferredStatusBarStyle这个方法来设置,是没有效果的,而必须要用[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]来设置,其二,当plist里面设置了View controller-based status bar appearance为YES,或者没有设置的时候(默认为YES),这个时候可以根据(UIStatusBarStyle)preferredStatusBarStyle这个方法来设置,用这个方法的时候也分为两种情况,一种情况是当前要设置的ViewController嵌入在一个NavigationController里面的时候,
系统默认的将指定状态栏的权利交给了导航控制器,要是想让导航控制器的childViewController来设置状态栏的颜色,就要自定义导航控制器来指定! 自定义导航控制器后,要是想指定状态栏由谁来设置,就需要说明清楚权利交给谁,下面两个方法都可以来指定,通过方法名也可以很清楚的理解,preferredStatusBarStyle这个方法重写,来返回想要指定的控制器的这个方法的返回结果,childViewControllerForStatusBarStyle这个方法则是用来说明让谁来拥有这个权利,两个方法都可以做的,自己选择即可,个人觉得第一个比较好,指定清楚之后,直接调这个控制器的这个方法返回值即可
完成上面的自定义后,只要在当前的Viewcontroller里面实现
preferredStatusBarStyle方法,设置好想要的状态栏颜色,然后在需要变更的地方调用[selfsetNeedsStatusBarAppearanceUpdate];
(这个方法会通知系统去调用当前UIViewController的preferredStatusBarStyle方法),这个和UIView的setNeedsDisplay原理差不多(调用UIView对象的setNeedsDisplay方法后,系统会在下次页面刷新时,调用重绘该view,系统最快能1秒刷新60次页面,具体要看程序设置),
- (UIStatusBarStyle)preferredStatusBarStyle
{ViewController *vc = self.topViewController;return [vc preferredStatusBarStyle];
}- (UIViewController *)childViewControllerForStatusBarStyle
{return self.topViewController;
}相关文章:
iOS 两种方式设置状态栏
1、ios9.0以前设置状态栏字体颜色 ///白色 [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent]; ///黑色 [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault]; 会看到如下提示: setStatusBarSty…...
html5:webSocket 基础使用
一、理解 HTML5 WebSocket HTML5 WebSocket是一种新型的网络协议,它能够在客户端和服务器之间建立实时的双向通信通道,使得浏览器和服务器之间的数据传输更加高效、快速和可靠。相比传统的HTTP协议,WebSocket协议使用更少的网络开销…...
html学习10-----总结(完)
<!DOCTYPE html> <html><head><meta charset"utf-8"/><title>html总结</title></head><body><h1>HTML总结</h1><br/><h2>文本格式化</h2><hr/><p><b>粗体文本<…...
Spring使用P命名空间实现注入数值信息-----Spring框架
<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:p"http://www.springframework.org/schema/p"x…...
windows环境下安装RabbitMQ
一、RabbitMq简介1.1消息队列中间件简介消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性[架构] 使用较多的消息队列有 ActiveMQ(安全)&#x…...
Java源码规则引擎:jvs-rules决策流的自定义权限控制
规则引擎用于管理和执行业务规则。它提供了一个中央化的机制来定义、管理和执行业务规则,以便根据特定条件自动化决策和行为。规则引擎的核心概念是规则。规则由条件和动作组成。条件定义了规则适用的特定情况或规则触发的条件,而动作定义了规则满足时要…...
Python-字符串的世界
Python字符串的世界 在Python编程中,字符串(String)是一种非常重要的数据类型,用于表示文本信息。字符串可以包含字母、数字、特殊字符以及空格,它们在编程中被广泛用于文本处理、格式化输出、字符串匹配等各种场景。…...
使用上 Spring 的事件机制
本文主要是简单的讲述了Spring的事件机制,基本概念,讲述了事件机制的三要素事件、事件发布、事件监听器。如何实现一个事件机制,应用的场景,搭配Async注解实现异步的操作等等。希望对大家有所帮助。 Spring的事件机制的基本概念 …...
Linux安装QT
//进入qt安装包路径 cd qt安装包路径 //修改权限 sudo chmod x qt-opensource-linux-x64-5.14.2.run //运行qt安装包 sudo ./qt-opensource-linux-x64-5.14.2.run //安装编译器 sudo apt-get install gcc g //安装编译工具 sudo apt-get install build-essential //安装Op…...
如何用arduino uno主板播放自己想要的曲子。《我爱你中国》单片机版本。
目录 一.效果展示 二.基本原理 三.电路图 四.代码 一.效果展示 arduino播放《我爱你中国》 二.基本原理 利用arduino uno单片机实现对蜂鸣器振动频率的调节,基于PWM控制系统通过代码实现控制。 三.电路图 四.代码 //main.uno #define Buzzer 2int PotBuffer …...
redis入门2-命令
Redis的基本数据类型 redis的基本数据类型(value): string,普通字符串 hash(哈希),适合存储对象 list(列表),按照插入顺序排序,可以由重复的元素 set(无序集合),没有重复的元素 sorted set(有序集合)&…...
Typescript 枚举类型
枚举是用来表示一组明确的可选值列表 // enum是枚举类型的关键字 //枚举如果不设置值,默认从0开始 enum Direction {Up, // 0 Down, // 1 Left, // 2Right // 3} //如果给第一个值赋值为100,则第二、第三第四个都会在第一个的基础上1 分别是101,102…...
docker小记-容器中启动映射端口号但访问不到
在docker容器中是每一个容器隔离分开的。 每个容器视为一个独立的环境,当在外部环境访问不到的时候就是说明端口号还是没映射到。 之前使用的映射说白了就是将docker中的独立的ip地址端口号映射到主机的ip地址和端口号。这一步没有成功。 docker inspect 容器名 …...
Java中的Map常见使用案例代码
以下是一些Java中Map的常见使用案例和具体代码实现: Map的遍历 Map<String, Integer> map new HashMap<>(); map.put(“apple”, 10); map.put(“banana”, 20); map.put(“orange”, 30); // 遍历方式一:使用entrySet()方法遍历 for (M…...
计算机视觉实验:图像处理综合-路沿检测
目录 实验步骤与过程 1. 路沿检测方法设计 2. 路沿检测方法实现 2.1 视频图像提取 2.2 图像预处理 2.3 兴趣区域提取 2.4 边缘检测 2.5 Hough变换 2.6 线条过滤与图像输出 3. 路沿检测结果展示 4. 其他路沿检测方法 实验结论或体会 实…...
Linux环境下VS code的python与C++调试环境的安装
Linux环境下VS code的python与C调试环境的安装 文章目录 Linux环境下VS code的python与C调试环境的安装前言一、云服务器的环境二、VS code相关信息三、python 开发环境配置四、C开发环境配置1.测试main.cpp2.进行debug3.进行debug程序4.运行main.cpp程序步骤 前言 最近写的 C&…...
AlexNet卷积神经网络-笔记
AlexNet卷积神经网络-笔记 AlexNet卷积神经网络2012年提出 测试结果为: 通过运行结果可以发现, 在眼疾筛查数据集iChallenge-PM上使用AlexNet,loss能有效下降, 经过5个epoch的训练,在验证集上的准确率可以达到94%左右…...
剑指 Offer 53 - I. !!在排序数组中查找数字 I (考查二分法)
剑指 Offer 53 - I. 在排序数组中查找数字 I 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums [5,7,7,8,8,10], target 8 输出: 2 示例 2: 输入: nums [5,7,7,8,8,10], target 6 输出: 0 提示: 0 < nums.length < 105 -109 < nums[i] &l…...
RANSAC算法在Python中的实现与应用探索:线性拟合与平面拟合示例
第一部分:RANSAC算法与其应用 在我们的日常生活和多个领域中,如机器学习,计算机视觉,模式识别等,处理数据是一个非常重要的任务。尤其是当我们需要从嘈杂的数据中获取信息或拟合模型时。有时候,数据可能包含异常值或噪声,这可能会对我们的结果产生重大影响。为了解决这…...
PHP接口自动化测试框架实现
我们来看一个简单的PHP实现的超简单的接口。 ...//报名验证 private function apply_verify() {$raid $this->input->get_post(raid);$mid $this->input->get_post(mid);if (!$raid || !$mid) {$this->ret_json(10021, 参数错误);}$this->load->model(…...
从零构建BJT放大电路:三种组态实战解析与选型指南
1. BJT放大电路基础:从器件特性到放大原理 第一次接触BJT放大电路时,我被那些密密麻麻的电路图和复杂的计算公式搞得头晕眼花。直到亲手搭建了几个实际电路后,才发现理解BJT放大其实没那么难。BJT(双极结型晶体管)作为…...
linux驱动调试方法整理
一般我喜欢把linux驱动的调试按矛盾分为几大类:1.驱动工程师和内核/自己的 2.应用工程师和驱动工程师的。其中我们需要掌握linux众多的调试控件才能灵活运用。驱动工程师和内核/自己的1.驱动加载和驱动调试信息使用printk(per_log)打印需求使…...
小红的图上加边【牛客tracker 每日一题】
小红的图上加边 时间限制:1秒 空间限制:256M 网页链接 牛客tracker 牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每…...
如何关闭Data Guard保护模式_降级为Max Performance以恢复主库读写
必须先确认保护模式和数据库角色,仅MAXIMUM AVAILABILITY或MAXIMUM PROTECTION需降级;执行前须停同步、确保主库OPEN且备库无MRP进程;降级后若仍不可写,需排查STANDBY_FILE_MANAGEMENT、归档目标状态及FORCE LOGGING等隐含依赖。确…...
喜欢搞技术的高技术、喜欢搞业务的搞业务
AI Flow Studio - 智能体编排平台> 🔥 2026年最热门的AI Agent编排平台 - 可视化流程设计、多模型集成、企业级管理项目概述AI Flow Studio 是一个现代化的 AI Agent 智能体编排与管理系统,提供可视化流程设计、多模态 AI 模型集成、企业级监控管理等…...
电解式除湿器费电吗?电解除湿器 与 半导体冷凝式和传统的压缩机式除湿方案,有什么不一样?
ROSAHL 电解式除湿器的功耗极低,其原理决定了它是一款节能环保的产品。以最大型号的功耗计算,即便 724 小时不间断运行,一年的耗电量通常也不到 50 度电,远低于半导体冷凝式和传统的压缩机式除湿方案。各型号性能差异对比ROSAHL 主…...
# 英伟达AI实验室财经分析报告(2026)
2026财年整体业绩 总营收:2159.38亿美元,同比增长65% 净利润:1200.67亿美元,同比增长65%,日均净赚约3.3亿美元 毛利率:稳定在75%的行业天花板水平,非GAAP毛利率达75.2% 市值:截至202…...
制造业设计团队文档管理选型实战
制造业设计团队文档管理选型实战 某中型机械制造企业,研发团队47人,日常需要管理CAD图纸、BOM表、工艺文件、技术规范等超过120万份文件。过去三年,这支团队换了两次文档管理系统,第二套系统上线8个月后被迫重建——原因是设计部门…...
Pico App ID配置全攻略:从注册到Unity集成
1. Pico开发者账号注册与准备 第一次接触Pico VR开发的朋友们,注册开发者账号是第一步。我刚开始用Pico开发时,发现国内和海外账号体系是分开的,这点要特别注意。国内开发者直接访问Pico开发者平台官网,点击右上角的"注册&qu…...
Citra模拟器终极解决方案:5步快速修复常见问题指南
Citra模拟器终极解决方案:5步快速修复常见问题指南 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/GitHub_Trending/ci/citra Citra模拟器作为最优秀的Nintendo 3DS游戏模拟器,让玩家能够在PC上重温经典游戏体验…...
