iOS 解决深色模式展示异常

news/2024/7/20 23:06:47 标签: ios, xcode, macos

新手入门
请多指教

前言

嗯,深色模式在iOS13版本就已经出了,但是呢,我们的app并没有适配(我也不知道为啥,可能是因为懒吧。。。)

最近用户使用的时候出问题了,首先是反馈说App里的字不显示
哎哟,我去。。
赶紧看一下
然后看到反馈的截图发现全是黑的,
不对呀,我们App设计的都是白色底色啊,
然后就突然想到iOS有个深色模式,果然在测试机上开启深色模式后,成功复现了问题。

解决方案

老规矩,先上答案,省的大家看我bb半天发现都是自己想找的信息。

不打算一个个适配,主要是缺少对应的图片适配。
所以直接打算暴力一点,禁用深色模式
或者说,强制app使用Light模式

在配置文件 info 下,新增 Appearance 属性,并设置值为Light
如下图所示
info

对应info.plist如下
info.plist

然后你会惊喜的发现
最终info.plist 文件源码中xml属性
多了UIUserInterfaceStyle 属性 ,并且值为 Light
source code info.plist

方便大家拷贝,贴下源码如下

// info.plist
<key>UIUserInterfaceStyle</key>
<string>Light</string>

好了,解决问题的大哥们可以撤了,下面是问题的发现和解决分析过程,基本是写给自己看的,想看的可以接续,不想看的可以直接去尝试代码了。

深色模式 Dark Mode

首先咱们先继续从没显示的原因说起来。
其实不是没显示出来,而是由于字体颜色被反转为白色,恰好背景也是白的,就木了。。。

咱是个iOS开发的二把刀,也不知道咋适配,先在网上查一下了解了解。

基本清一色的说可以通过info.plist文件添加如下内容解决。
<key>UIUserInterfaceStyle</key>
<string>Light</string>

我兴冲冲的就上了啊,先是在项目info里设置,
但是每次输完之后一敲回车都变成了Appearance属性
我那是还不知道这俩是一样的,寻思着,咋回事,不行啊。

然后去info.plist试试,当前是列表形式
如下图
Property List info.plist

敲完后也秒变Appearance
Property List info.plist

然后又看一波博客,发现有人说添加User Interface Style属性
诶,这个能输入。
最后就掉进了这个坑。
但是其实最终不会有效果。

然后反思下,刚才的变化,既然两次都是这么改变的,是不是二者就是同一个值呢?

这时重新操作了一遍,
这次通过source code 方式打开info.plist看了一下。
好家伙,就是同一个东西啊。

source code info.plist

吃了基础知识不牢的亏啊。
特此记录下过程。
长个记性。

参考文献

iOS13-适配夜间模式/深色外观(Dark Mode)
UIUserInterfaceStyle
UIAppearance
stackoverflow dark-mode-on-ios-13


http://www.niftyadmin.cn/n/1525936.html

相关文章

SQL 大数据查询如何进行优化?

1.对查询进行优化&#xff0c;应尽量避免全表扫描&#xff0c;首先应考虑在 where 及 order by 涉及的列上建立索 2.应尽量避免在 where 子句中对字段进行 null 值判断&#xff0c;否则将导致引擎放弃使用索引而进行全表扫描 select id from t where num is null 可以在num上…

订单分库分表实践总结以及关键步骤

转载地址&#xff1a;http://mp.weixin.qq.com/s?__bizMzA5Nzc4OTA1Mw&mid2659597584&idx1&sn67f5327423d7c66c3d3a6d32a040198d&scene0#rd 随着唯品会业务的快速发展&#xff0c;订单量的不断增长&#xff0c;原有的订单存储架构已经不能满足公司的发展了&am…

Java 允许Jsonp跨域操作

首先采用跨域操作Js $.ajax({ async: false, url: "http://192.168.0.5/Web/web1.aspx", type: "GET", dataType: jsonp, //jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回…

为什么view的setOnClickListener引用Activity不会内存泄漏

学就完事 本文&#xff1a;https://www.jianshu.com/p/4b3aad1b8dba 文章目录前言什么是内存泄露答题兴趣OnClickListener在View中的引用位置View#getListenerInfo探索该引用何时被释放Activity#onDestroyActivity#performDestroyInstrumentation#callActivityOnDestroyActivit…

kafka安装和启动

快速启动 kafka的背景知识已经讲了很多了&#xff0c;让我们现在开始实践吧&#xff0c;假设你现在没有任何Kafka或ZooKeeper环境。 Step 1: 下载代码 下载0.10.0.0版本并且解压它。 > tar -xzf kafka_2.11-0.10.0.0.tgz > cd kafka_2.11-0.10.0.0 Step 2: 启动服务 运行…

Kotlin 为什么可以和Java混合开发

学&#xff01; 本文&#xff1a;https://www.jianshu.com/p/e3afe651052b 文章目录前言Kotlin互操作性总结参考文献前言 闲来无聊&#xff0c;和一个朋友聊天。 他突然问我&#xff1a;你知道Kotlin和Java为啥可以混合开发相互调用么&#xff1f; 我&#xff1a;&#xff1f;…

Kotlin forEach中实现break

Kotlin 线上编写练习 Kotlin官网提供了 PlayGround 供大家线上尝试 地址&#xff1a;https://play.kotlinlang.org/ 文章目录前言解决方式遇到得问题结语参考文献前言 切换为 Kotlin 后很多函数使用还不太习惯。 最近就遇到了如何在forEach中使用break的问题。 解决方式 老规…

Xcode下和C-Free下的EOF键

Xcode的EOF键为controld 占两个字符 C-free 下是ctrlz