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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/23189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm——漏斗图

import pyecharts.options as opts from pyecharts.charts import Funnel""" Gallery 使用 pyecharts 1.1.0 参考地址: https://echarts.apache.org/examples/editor.html?cfunnel目前无法实现的功能:1、暂时无法对漏斗图的长宽等范围操作进行修改 ""…

锂电池充电/保护IC :TP4056 1A线性锂离子电池充电器(DW01A /FS8205A)

1. TP4056 概述 TP4056是一款性能优异的单节锂离子电池恒流/恒压线性充电器。TP4056采用ESOP8封装配合较少的外围原件使其非常适用于便携式产品,并且适合给USB电源以及适配器电源供电。 基于特殊的内部MOSFET架构以及防倒充电路,TP4056不需要外接检测电…

基于LLM的SQL应用程序开发实战(一)

基于LLM的SQL应用程序开发实战(一) 16.1 SQL on LLMs应用程序初始化 本节主要从案例代码的角度切入,探索ChatGPT以及大模型,尤其是从生产环境的视角,来思考具体的最佳实践。本节主要跟大家谈的是,在LangChain这样一个框架下,我们使用GPT-3.5或者GPT-4大模型,同时使用第…

AWS S3 协议对接 minio/oss 等

使用亚马逊 S3 协议访问对象存储 [s3-API](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/API/API_Operations_Amazon_Simple_Storage_Service.html)- 兼容S3协议的对象存储有- minio- 似乎是完全兼容 [兼容文档](https://www.minio.org.cn/product/s3-compatibility.htm…

【BASH】回顾与知识点梳理(七)

【BASH】回顾与知识点梳理 七 七. 前六章知识点总结及练习7.1 总结7.2 练习 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 七. 前六章知识点总结及练习 7.1 总结 由于核心在内存中是受保护的区块,因此我们必须要透过『 Shell 』将我…

大数据课程H1——TELECOM的电信流量项目架构

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解TELECOM项目的架构和环境配置; ⚪ 了解TELECOM项目的数据字典; 一、简介 1. 概述 1. 当用户通过网络设备(手机、平板电脑、笔记本电脑等)进…

JavaScript闭包和this

目录 JavaScript闭包和this 1 闭包 1.1 变量作用域 1)函数内部可以读取全局变量 2)函数外部无法读取函数内部的局部变量 1.2 读取函数内部的局部变量 1)在函数内部再定义一个函数 2)为外部程序提供访问函数局部变量的入口 1.3…

Github 创建自己的博客网站

参考pku大佬视频制作,附上B站视频:【GitHub Pages 个人网站构建与发布】 同时还参考了:【Python版宝藏级静态站点生成器Material for MkDocs】 GitHub Pages 介绍 内容参考:GitHub Pages - 杨希杰的个人网站 (yang-xijie.githu…

【CSS】ios上fixed固定定位的input输入框兼容问题

需求 : 实现一个简单的需求,上方是搜索框并且固定顶部,下方是滚动的内容list 问题 : 若如图上方使用固定定位, 下方用scroll-view, 在安卓上是没有问题的, 但是发现ios上会出现兼容问题 : 问题1: 当content list滚动到中间时再去搜索, 展…

c语言每日一练(1)

前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

解决Springboot+VUE项目部署出现的跨域问题

自己写了一个项目,写好了,发现不会部署,然后到处查资料,最终终于部署好自己写的系统,系统为前后端分离项目。需要分别部署在同一个服务器docker中,配置不同得端口隐射,部署得过程中主要是跨域问…

你值得拥有——流星雨下的告白(Python实现)

目录 1 前言 2 霍金说移民外太空 3 浪漫的流星雨展示 4 Python代码 1 前言 我们先给个小故事,提一下大家兴趣;然后我给出论据,得出结论。最后再浪漫的流星雨表白代码奉上,还有我自创的一首诗。开始啦: 2 霍金说…

Oracle锁的学习

Oracle数据库中的锁机制 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 在数据库中有两种基本的锁类…

spark history网络流量占用高问题记录

生产环境遇到一台机器网络流量占用高告警 由于监控只有机器总的网络流量,没有具体进程的 于是只能登陆服务器,安装nethogs:yum install nethogs 然后执行nethogs命令查看进程流量 观察到主要是spark history server这个进程占用流量高(最高…

docker-compose搭建redis服务

docker-compose搭建redis服务 1.首先准备所需文件 mkdir data touch redis.conf touch docker-compose.yaml # 这个结构 [rootiZbp16ukkrjo2m3jyyo3tfZ redis]# ls data docker-compose.yaml redis.conf2.编辑redis.conf bind 0.0.0.0 port 6379 # tcp-backlog 511 timeou…

puppeteer监听response并封装为express服务调用

const express require(express); const puppeteer require(puppeteer); const app express(); let browser; // 声明一个全局变量来存储浏览器实例app.get(/getInfo, async (req, res) > {try {const page_param req.query.page; // 获取名为"page"的查询参数…

openCV图像读取和显示

文章目录 一、imread二、namedWindow三、imshow #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main(int argc,char** argv) {cv::Mat img imread("./sun.png"); //3通道 24位if (img.empty()) {std:…

bitbucket ssh登录提示 port 22: Operation timed out

bitbucket ssh登录失败 执行命令 ssh -T -vvv gitbitbucket.org结果提示&#xff1a; ssh: connect to host bitbucket.org port 22: Operation timed out原因&#xff1a;使用了22端口其实并不稳定。配置的其实如果连接到443端口更稳定。修改 ~/.ssh/config &#xff0c;增…

Alchemy Catalyst 2023 crack

Alchemy Catalyst 2023 crack Alchemy CATALYST是一个可视化本地化环境&#xff0c;支持本地化工作流程的各个方面。它帮助组织加快本地化进程&#xff0c;比竞争对手更快地进入新市场&#xff0c;并为他们创造新的收入机会。 创建全球影响力 高质量的产品和服务翻译对跨国组织…

【980. 不同路径 III】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 在二维网格 grid 上&#xff0c;有 4 种类型的方格&#xff1a; 1 表示起始方格。且只有一个起始方格。2 表示结束方格&#xff0c;且只有一个结束方格。0 表示我们可以走过的空方格。-1 表示我们无…