暗黑模式(黑暗模式,深色模式)适配

暗黑模式(黑暗模式,深色模式)适配

  • 全局关闭

打开Info.plist 项目配置文件,添加UIUserInterfaceStyle字段,key类型为String, 其value值设置为 Light模式。

  • 部分关闭

iOS13之后UIViewController与UIView 都新增一个属性 overrideUserInterfaceStyle。该属性设置后,会影响视图控制器和子视图控制器以及父视图和子视图,但不会影响application和present出的视图控制器。

/* Set `overrideUserInterfaceStyle` to cause this view controller and its children to have a* specific `UIUserInterfaceStyle`. This does not affect the application or any parent view controllers.*/
@property (nonatomic) UIUserInterfaceStyle overrideUserInterfaceStyle API_AVAILABLE(tvos(13.0), ios(13.0)) API_UNAVAILABLE(watchos); // Defaults to UIUserInterfaceStyleUnspecified
  • 适配暗黑模式

颜色适配

  • UIColor 动态颜色systemBackgroundColorlabelColorsystemGray2Color等,自己可以试试切换模式后会有什么效果。
    if (@available(iOS 13.0, *)) {self.view.backgroundColor = [UIColor systemBackgroundColor];} else {// Fallback on earlier versionsself.view.backgroundColor = [UIColor whiteColor];}
  • UIColor的colorWithDynamicProviderinitWithDynamicProviderresolvedColorWithTraitCollection三个方法。
    if (@available(iOS 13.0, *)) {col_lineView.backgroundColor = [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull traitCollection) {if (traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {return [UIColor whiteColor];}else {return [UIColor blackColor];}}];} else {// Fallback on earlier versionscol_lineView.backgroundColor = [UIColor blackColor];}

图片适配

(1)在Assets.xcassets图片资源库里新建一个Image Set
新建Image Set

(2)打开侧边栏,找到最后一项,设置Image Set属性Appearance为Any,Dark。
设置属性

(3)修改图片名称(所有图片名都一样),拖动图片到不同模式下的对应图片资源里,1倍图可以不用
新增图片样式
至此大功告成,可以运行看看效果。

监听模式切换

苹果提供了2个方法,一个是监听模式切换的方法,一个是判断当前的TraitCollection和不同的TraitCollection比较,查看是否能显示不同模式

/*! To be overridden as needed to provide custom behavior when the environment's traits change. */
- (void)traitCollectionDidChange:(nullable UITraitCollection *)previousTraitCollection API_AVAILABLE(ios(8.0));
/* Return whether this trait collection, compared to a different trait collection, could show a different appearance* for dynamic colors that are provided by UIKit or are in an asset catalog.* If you need to be aware of when dynamic colors might change, override `traitCollectionDidChange` in your view or view controller,* and use this method to compare `self.traitCollection` with `previousTraitCollection`.** Currently, a change in any of these traits could affect dynamic colors:*    userInterfaceIdiom, userInterfaceStyle, displayGamut, accessibilityContrast, userInterfaceLevel* and more could be added in the future.*/
- (BOOL)hasDifferentColorAppearanceComparedToTraitCollection:(nullable UITraitCollection *)traitCollection API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);

此方法进入后台时会调用2次,每次hasDifferentColorAppearanceComparedToTraitCollection都返回YES。stackoverflow也有此问题

- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {[super traitCollectionDidChange:previousTraitCollection];if (@available(iOS 13.0, *)) {BOOL isDiffernt = [self.traitCollection hasDifferentColorAppearanceComparedToTraitCollection:previousTraitCollection];if (isDiffernt) {NSLog(@"%ld----------%ld", (long)self.traitCollection.userInterfaceStyle, previousTraitCollection.userInterfaceStyle);}} else {// Fallback on earlier versions}
}

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

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

相关文章

太强了,英伟达面对ChatGPT还有这一招...

大家好,我是 Jack。 今年可谓是 AI 元年,ChatGPT、AIGC、VITS 都火了一波。 我也先后发布了这几期视频: 这是一个大模型的时代,AI 能在文本、图像、音频等领域大放异彩,得益于大模型。而想要预训练大模型&#xff0c…

让GPT-3、ChatGPT、GPT-4一起做脑筋急转弯,GPT-4一骑绝尘!

作者 | python 一个烙饼煎一面一分钟,两个烙饼煎两面几分钟? 让你来回答,是不是一不小心就掉到沟里了?如果让大语言模型来做这种脑筋急转弯会怎样呢?研究发现,模型越大,回答就越可能掉到沟里&a…

用ChatGPT学习多传感器融合中的基础知识

该列表会不定期更新… 文章目录 困惑与解答:问题:匈牙利算法中的增广矩阵路径是什么意思解答:个人理解概述: 问题:扩展卡尔曼滤波是非线性方程求解问题,是将非线性方程拟合为线性方程吗解答:个…

Edge 开发者日 · New Bing New Edge

在开始应用开发前,我们往往会面临着“Web 应用 or 原生应用”的选择。在通过 Microsoft Edge 进行 Web 开发时,WebView2 能够带给开发者兼具 Web 和本机平台的混合应用开发体验;而与此同时,随着 PWA(Progressive Web A…

「图文教程」Windows系统Microsoft Edge浏览器设置搜索框搜索引擎为百度

相信使用过Microsoft Edge浏览器的朋友都有一个困扰,就是自带的Microsoft Edge浏览器不好用,但是想更换搜索引擎又不知道从哪里更换,下面小编就给大家带来Microsoft Edge浏览器更换搜索引擎为百度的教程。 1、打开Microsoft Edge浏览器&…

Microsoft Edge有哪些你不知道却超级好用的插件?(Microsoft Edge功能测评)

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:对Edge浏览器的简单测评,分享一些自己在使用好用的插件. 目录…

微软 Edge 配置百科 1.6 新版发布 让你可以随心所欲的配置、得心应手的使用Edge的小工具

EdgeTools 更新日志: 2023.05.27 EdgeTools 1.6 发布: 1、支持 113.0.1774.50 版Edge的新增配置。 2、部分功能和性能的优化。 2023.03.28 EdgeTools 1.5 发布: 1、新增文件菜单,支持导入、导出配置文件和…

微软 Edge 被指将用户访问的站点发送给Bing

聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 微软 Edge 浏览器似乎将用户访问的 URL 发送至 Bing API 网站。 上周,Reddit 用户率先发现 Edge 存在这些隐私问题,注意到最新的 Edge 版本将请求发送至 bingapis.c…

一款既有颜值又有实力的Edge浏览器插件——WeTab

目录 前言 推荐理由: 1.方便快捷的ChatGPT 2.适合摸鱼的小游戏 3.网站的快速访问 4.精美的壁纸切换 插件安装方法 总结 前言 我们知道,许多浏览器都可以安装扩展插件,有些插件的功能是非常不错的。下面我想推荐一款Edge浏览器的插件&…

屏蔽Edge浏览器的新闻推送,高效办公!

一、问题描述 每次打开浏览器想查询一些专业相关的知识时,总会被浏览器主页的一些“没营养的”新闻所牵绊,如下图所示。虽然我对这些新闻根本不感兴趣,但也做不到看了毫无感觉。因此,屏蔽这些新闻真的很有必要。我们需要获取什么…

拦截Edge的“根据热门内容向您推荐”

相信不少小伙伴因为广告、界面清洁度等原因,一直都使用谷歌浏览器Chrome 其实近年来,微软自带的浏览器Edge更新之后,使用体验感也非常不错。集锦、垂直标签页等辅助功能,登录微软账户随时可同步书签、设置,需要同时登录…

chatgpt赋能python:Python主网站的SEO优化

Python主网站的SEO优化 作为一名有10年Python编程经验的工程师,我一直非常关注Python官方网站的SEO优化,因为官方网站对于传播Python语言的影响至关重要。在这篇文章中,我将介绍一些Python主网站的SEO优化策略,并总结一些结论&am…

126页PPT干货分享:ChatGPT与数字化转型的业财融合(附下载链接)

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年5月份全网热门报告合集 无需翻墙,无需注册,ChatGPT4直接使用 ChatGPT提词手册,学完工作效率提升百倍 马斯克谈AI:中美差…

当人工智能ChatGPT参与创作 图书出版业应该如何应对?

ChatGPT引发全社会各行各业对人工智能持续保持高度关注。它已经改变了很多行业,接下来还将改变哪些领域,或者它一定不会改变什么,都是人们思考的热点。 人工智能的快速发展,给图书出版业也带来诸多影响。从积极的角度来说&#x…

chatgpt赋能python:Python如何画图:介绍与示例

Python如何画图:介绍与示例 Python是一种高级编程语言,它支持多种图形库,可以用来创建各种不同种类的图像和可视化。在本篇文章中,我们将会介绍一些用于Python程序中绘制图形和可视化数据的绘图库。我们将会探讨如何使用这些库来…

windows-中科院学术ChatGPT优化安装记录

搭建中科院学术专业版 ChatGPT记录 1、git仓库获取 > git clone https://github.com/binary-husky/chatgpt_academic.git(在git bash 中打开输入就行) 打开后输入命令即可 然后你便得到了它,进入该文件夹 打开命令终端,为他配…

融资租赁业务系统(财务中台)

融资租赁业务系统 财务中台 产品白皮书 版本号:V1.1 李雷 微信号:yanan122914 平台概述 融资租赁财务中台产品是一套专门针对融资租赁行业设计的融资租赁财务统一解决方案。对租赁公司传统的大单回租、直租、资产转让等业务模式,渠道零售小…

java 汽车租赁系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、汽车租赁系统1.汽车类 抽象父类2.客车类 子类3.轿车类 子类4.业务类5.功能测试类(运行) 总结 前言 使用数组,面向对象的…

信用租赁系统搭建-“信用”+“租赁”模式,租赁方式更灵活

一、系统介绍 信用租赁系统(又名:回租贷款系统)是互融云针对租赁市场需求而研发出来的信用租赁金融服务系统,目前主要应用于高信用可免减押金的租赁需求。系统是“信用”“租赁”的模式,租赁方式包含长期租赁方式和短期…

汽车租赁系统(2)-完成登录功能

文章目录 完成汽车租赁系统的登录功能分析登录功能:创建数据库的表用户表(sys_users)创建首页index.jsp创建实体类创建UserVo创建Mapper创建Mapper.xml创建UserService和UserServiceImpl创建LoginController创建system/main/index.jsp 这篇博客主要讲解登录功能的实现,工作台的…