当前位置: 首页 > news >正文

uniapp适配暗黑模式配置plus.nativeUI.setUIStyle适配DarkMode配置

uniapp适配暗黑模式配置

目录

  • uniapp适配暗黑模式配置
      • setUIStyle
      • DarkMode 适配
        • app-plus
      • `manifest.json`配置
      • `theme.json`配置
      • `pages.json`配置
      • 页面切换代码实现
      • 同步手机暗黑配置
      • 额外适配

参考官方文档:https://uniapp.dcloud.net.cn/tutorial/darkmode.html

主要用到api:setUIStyle

setUIStyle

设置原生界面样式(暗黑模式)plus.nativeUI.setUIStyle(style);
说明:
iOS13+系统支持暗黑模式,可设置原生界面的外观样式为浅色或深色(暗黑模式)。 即使应用没有设置"全局开启暗黑模式",也可以调用此方法强制设置原生界面外观样式。 HBuilderX2.6.3+版本支持,并且要求iOS13及以上系统。
参数:
style: ( String ) 必选 原生界面样式
可取值:
“light” - 浅色外观样式
“dark” - 深色外观样式(暗黑模式)
“auto” - 根据系统外观样式自动调整,应用需"全局开启暗黑模式”,参考https://ask.dcloud.net.cn/article/36995

DarkMode 适配

app-plus

manifest.json -> app-plus 中配置:

配置 darkmode:true
配置 themeLocation,指定变量配置文件 theme.json 路径,例如:在根目录下新增 theme.json,需要配置 "themeLocation":"theme.json"
theme.json 中定义相关变量
pages.json 中以@开头引用变量
整体配置

"app-plus" : {"darkmode" : true,"themeLocation" : "theme.json" // 如果 theme.json 在根目录可省略}

实现效果:
dark模式
light模式

manifest.json配置

"app-plus" : {"darkmode": true,"themeLocation": "theme.json", // 如果 theme.json 在根目录可省略"safearea": {// 适配ios安全线背景色"background": "#ffffff","backgroundDark": "#1F1F1F","bottom": {"offset": "auto"}},} 

theme.json配置

可复制文件自行修改

{"light": {"navigationBarTextStyle": "black","navigationBarBackgroundColor": "#F7F7F7","backgroundColor": "#F7F7F7","tabBarColor": "#939393","tabBarSelectedColor": "#2979ff","tabBarBorderStyle": "black","tabBarBackgroundColor": "#ffffff"},"dark": {"navigationBarTextStyle": "white","navigationBarBackgroundColor": "#1F1F1F","backgroundColor": "#1F1F1F","tabBarColor": "#cacaca","tabBarSelectedColor": "#2979ff","tabBarBorderStyle": "white","tabBarBackgroundColor": "#1F1F1F"}
}

pages.json配置

主要是修改tabbar和globalStyle,
tabbar的icon也可以通过theme.json配置不同的图片,然后通过 @这种方式引入即可。

"tabBar": {"color": "@tabBarColor","selectedColor": "@tabBarSelectedColor","borderStyle": "@tabBarBorderStyle","backgroundColor": "@tabBarBackgroundColor","fontSize": "11px","iconWidth": "20px","iconHeight": "20px","spacing": "5px","list": [{"pagePath": "pages/index/index","text": "首页","iconPath": "static/images/tabbar/home.png","selectedIconPath": "static/images/tabbar/home_select.png"},{"pagePath": "pages/mine/mine","text": "我的","iconPath": "static/images/tabbar/wode.png","selectedIconPath": "static/images/tabbar/wode_select.png"}]},"globalStyle": {"navigationBarTextStyle": "@navigationBarTextStyle","navigationBarTitleText": "uni-app","navigationBarBackgroundColor": "@navigationBarBackgroundColor","backgroundColor": "@backgroundColor"}

页面切换代码实现

mine.vue

<template><button type="text" class="change-theme" @click="changeTheme('dark')">切换暗黑模式</button><button type="text" class="change-theme" @click="changeTheme('light')">切换明亮模式</button>
<templaate>
<script setup>
// 切换用plus实现
function changeTheme(theme) {//暗黑模式// #ifdef APPconsole.log('✨file:mine.vue:52✨✨', uni.getSystemInfoSync());plus.nativeUI.setUIStyle(theme)// 此处监听也是监听的的app主题信息,不是手机系统的主题uni.onThemeChange(({ theme }) => {console.log('onThemeChange', theme)})// #endif
}
</script>

至此配置,手机上点击切换明亮和暗黑是没有问题的,都是正常切换;
但是没办法同步手机系统的设置。

同步手机暗黑配置

manifest.json -> plus 中配置:【注意:保存后,提交云端打包后生效】

  • iOS平台:在 “plus” -> “distribute” -> “apple” 节点下添加 defaultTheme 节点
  • Android平台:在 “plus” -> “distribute” -> “google” 节点下添加 defaultNightMode 节点
"app-plus" : {"darkmode" : true,"themeLocation" : "theme.json","safearea" : {// 安全区域看项目需要,设置"none"需要页面内自行适配"background" : "#ffffff","backgroundDark" : "#1F1F1F","bottom" : {"offset" : "auto" // "auto" | "none"}},"distribute" : {"apple" : {//"UIUserInterfaceStyle": "Automatic",   //不推荐使用,设置light或dark后将无法跟随系统"defaultTheme" : "auto" // HBuilderX 3.6.10及以上版本支持  },"google" : {"defaultNightMode" : "auto" // "light" | "dark" | "auto"}}
},

进行上面配置后,打包自定义基座,然后运行到手机查看效果。
切换手机系统暗黑模式,app会自动同步设置。

注:
如果手动调用plus.nativeUI.setUIStyle()设置了’dark’或者’light’,则不会跟随系统;
再次调用plus.nativeUI.setUIStyle('auto'),及设置成自动后,可再次跟随系统变化。

额外适配

有些页面可能会出现无法适配的问题,因为自己写的样式,这是背景色白色了,需要自行进行适配

比如像下面这种样式,我用的uni-list组件,就需要再写样式进行适配。
在这里插入图片描述
适配样式,只做参考,根据实际情况进行修改

@media (prefers-color-scheme: dark) {.content {background-color: rgb(31, 31, 31);}::v-deep .uni-list {background-color: rgb(31, 31, 31);}::v-deep .uni-list-item {background-color: rgb(31, 31, 31) !important;}::v-deep .uni-list-item__content-title {color: #999999 !important;}
}

适配后的样式:
在这里插入图片描述
兼容:
iOS 13+、Android 10+设备上才支持

参考资料:
https://ask.dcloud.net.cn/article/36995
https://www.html5plus.org/doc/zh_cn/nativeui.html#plus.nativeUI.setUIStyle
https://uniapp.dcloud.net.cn/tutorial/darkmode.html#open-darkmode

相关文章:

uniapp适配暗黑模式配置plus.nativeUI.setUIStyle适配DarkMode配置

uniapp适配暗黑模式配置 目录 uniapp适配暗黑模式配置setUIStyleDarkMode 适配app-plus manifest.json配置theme.json配置pages.json配置页面切换代码实现同步手机暗黑配置额外适配 参考官方文档&#xff1a;https://uniapp.dcloud.net.cn/tutorial/darkmode.html 主要用到api…...

EXCEL 或 WPS 列下划线转驼峰

使用场景&#xff1a; 需要将下划线转驼峰&#xff0c;直接在excel或wps中第一行使用公式&#xff0c;然后快速刷整个列格式即可。全列工下划线转为格式&#xff0c;使用效果如下&#xff1a; 操作步骤&#xff1a; 第一步&#xff1a;在需要显示驼峰的一列&#xff0c;复制以…...

走进Linux的历史发展史

目录 前言 Linux的发展史 UNIX发展的历史 Linux发展历史 开源 企业应用现状 Linux在服务器领域的发展 桌面领域 移动嵌入式领域 云计算/大数据领域 发行版 ​编辑 Linux环境搭建方式 前言 本节博客内容较水&#xff0c;主要介绍Linux的发展历史和其相关的学习内容&a…...

学习yum工具,进行安装软件

目录 1.Linux 软件包管理器 yum 什么是软件包 2.Linux下安装软件的方案 3.Linux软件生态 Linux下载软件的过程&#xff08;Ubuntu、Centos、other&#xff09; 操作系统的好坏评估--- ⽣态问题 为什么会有⼈免费特定社区提供软件&#xff0c;还发布&#xff1f;还提供云服…...

union介绍及使用

union格式 在C中&#xff0c;union是一种特殊的数据类型&#xff0c;它允许在相同的内存位置存储不同的数据类型&#xff0c;但在任意时刻只能使用一个成员。以下是union类型的基本格式说明&#xff1a; union UnionName {memberType1 memberName1;memberType2 memberName2;m…...

安全,服务器证书和SSL连接

业务报错&#xff1a; javax.net.ssl.SSLPeerUnverifiedException: Certificate for <10.5.20.137> doesn’t match any of the subject alternative names: [*.dt.zte.com.cn] at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSoc…...

Java结合ElasticSearch根据查询关键字,高亮显示全文数据。

由于es高亮显示机制的问题。当全文内容过多&#xff0c;且搜索中标又少时&#xff0c;就会出现高亮结果无法覆盖全文。因此需要根据需求手动替换。 1.根据es的ik分词器获取搜索词的分词结果。 es部分&#xff1a; //中文分词解析 post /_analyze {"analyzer":"…...

Design Compiler:Topographical Workshop Lab2

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 本文是对Synopsys Design Compiler Topographical/Graphical Workshop Lab Guide中Lab2的翻译&#xff0c;Lab文件可以从以下链接获取。 Synopsys Design Co…...

【C语言】连接陷阱探秘(1):声明与定义

目录 一、声明与定义的混淆 1.1. 声明(Declaration) 1.2. 定义(Definition) 1.3. 避免混淆的方法 1.4. 示例 二、声明与定义不匹配 2.1. 常见的不匹配情况 2.2. 解决方法 三、外部变量与静态变量的命名冲突 3.1. 外部变量命名冲突 3.2. 静态变量命名冲突 四、缺…...

ChatGPT学术专用版,一键润色纠错+中英互译+批量翻译PDF

ChatGPT academic项目是由中科院团队基于ChatGPT专属定制。论文润色、语法检查、中英互译、代码解释等可一键搞定&#xff0c;堪称科研神器。 功能介绍 我们以3.5版本为例&#xff0c;ChatGPT学术版总共分为五个区域&#xff1a;输入控制区、输出对话区、基础功能区、函数插件…...

python isinstance(True, int)

今天的bug 是布尔类型给的。 >>> a True >>> isinstance(a, int) True>>> a True >>> isinstance(a, bool) True‌Python中的布尔类型&#xff08;bool&#xff09;实际上是整数类型&#xff08;int&#xff09;的一个子类&#xff0c;…...

1.5寸**进口 128128带灰阶oled屏 spi串口 老王电子diy 设备 OLED 2024/11/15 arduino

名:1.5寸**进口 128128带灰阶oled屏 协:spi串口 铺:老王电子diy 设备: OLED 时间:2024/11/15 IDE: arduino 兜兜转转还是打通了,他的接口 用的i2c 标志 夭寿咯 MOSI&#xff08;Master Out Slave In&#xff09;&#xff1a;主机输出&#xff0c;从机输入。MISO&#xff…...

【EasyExcel】复杂导出操作-自定义颜色样式等(版本3.1.x)

文章目录 前言一、自定义拦截器二、自定义操作1.自定义颜色2.合并单元格 三、复杂操作示例1.实体(使用了注解式样式)&#xff1a;2.自定义拦截器3.代码4.最终效果 前言 本文简单介绍阿里的EasyExcel的复杂导出操作&#xff0c;包括自定义样式&#xff0c;根据数据合并单元格等。…...

机器学习 ---线性回归

目录 摘要&#xff1a; 一、简单线性回归与多元线性回归 1、简单线性回归 2、多元线性回归 3、残差 二、线性回归的正规方程解 1、线性回归训练流程 2、线性回归的正规方程解 &#xff08;1&#xff09;适用场景 &#xff08;2&#xff09;正规方程解的公式 三、衡量…...

深度学习每周学习总结J5(DenseNet-121 +SE 算法实战与解析 - 猴痘识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 0. 总结 数据导入及处理部分&#xff1a;本次数据导入没有使用torchvision自带的数据集&#xff0c;需要将原始数据进行处理包括数据导入…...

VBA学习笔记:点击单元格显示指定的列

应用场景&#xff1a; 表格中列数较多&#xff0c;特定条件下隐藏一些无关的列&#xff0c;只保留相关的列&#xff0c;使表格更加清晰。 示例&#xff1a;原表格如下 点击一年级&#xff0c;只显示一年级相关的科目&#xff1a; 点击二年级&#xff0c;只显示二年级相关的科…...

windows C#-LINQ概述

语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串&#xff0c;没有编译时类型检查或 IntelliSense 支持。 此外&#xff0c;需要针对每种类型的数据源了解不同的查询语言&#xff1a;SQL 数据库、XML 文档、各种 Web 服…...

vue项目npm run serve出现【- Network: unavailable】(从排查到放弃)

1. 问题现象 环境&#xff1a; 系统&#xff1a;win11node&#xff1a;v16.20.2“vue”: “2.6.10” 执行npm run serve启动vue项目&#xff0c;期望&#xff1a; App running at:- Local: http://localhost:9528/ - Network: http://x.x.x.x:9528/实际&#xff1a; App runn…...

R语言贝叶斯分析:INLA 、MCMC混合模型、生存分析肿瘤临床试验、间歇泉喷发时间数据应用|附数据代码...

全文链接&#xff1a;https://tecdat.cn/?p38273 多模态数据在统计学中并不罕见&#xff0c;常出现在观测数据来自两个或多个潜在群体或总体的情况。混合模型常用于分析这类数据&#xff0c;它利用不同的组件来对数据中的不同群体或总体进行建模。本质上&#xff0c;混合模型是…...

C++ 关于类与对象(中篇)一篇详解!(运算符重载)

赋值运算符重载 运算符重载 C 为了 增强代码的可读性 引入了运算符重载 &#xff0c; 运算符重载是具有特殊函数名的函数 &#xff0c;也具有其返回值类型&#xff0c;函数名字以及参数列表&#xff0c;其返回值类型与参数列表与普通的函数类似。 函数名字为&#xff1a;关键…...

Scala的set

//Set的特点&#xff1a;唯一&#xff08;元素不相同&#xff09;&#xff1b;无序 case class Book(var bookName:String,var author:String,var price:Double){} object test27 {def main(args: Array[String]): Unit {//定义一个可变setval set1 scala.collection.mutable…...

Linux---常用shell脚本

目录 一.网络服务 开启network服务 网口IP配置 聚合口配置 前言 秋招拿到了科大讯飞的offer&#xff0c;可是由于某些原因无法完成三方签署&#xff0c;心情还是比较失落的&#xff0c;或许写一篇技术博客&#xff0c;活跃一下大脑思维也是一种不错的放松方式。 一.网络服务 …...

windows二进制安全零基础(二)

文章目录 栈&#xff08;The Stack&#xff09;调用约定&#xff08;Calling Conventions&#xff09;函数返回机制 在x86架构中&#xff0c;栈&#xff08;Stack&#xff09;是一个非常重要的内存区域&#xff0c;它用于支持线程的短期数据需求&#xff0c;如函数调用、局部变…...

git常用命令+搭vscode使用

1.克隆远程代码 git clone http:xxx git clone ssh:xxx clone的url 中 https和 ssh是有区别的: git中SSH和HTTP连接有什么区别-CSDN博客 当然https拉下来的代码每次pull /push都需要验证一次自己的账户和密码,可以config进行配置不用每次手敲: 解决VScode中每次git pu…...

如何在C#中处理必盈接口返回的股票数据?

在必盈接口返回股票数据后&#xff0c;在 C# 中可通过以下步骤进行处理&#xff1a; 数据获取 使用 HttpWebRequest 或 HttpClient 类向必盈接口发送请求以获取数据。以 HttpWebRequest 为例&#xff0c;构建请求并发送&#xff0c;获取响应流后读取为字符串形式的 JSON 数据。…...

01 最舒适的python开发环境

0 前言 我自己经过尝试&#xff0c;总结出python3开发环境的最舒适方式。 python3安装创建虚拟环境 venvjupyter notebook 笔记本安装vscode插件(Python, Pylance, Jupyter) 1 python3安装 ubuntu系统下安装最新版本的python3 sudo apt update sudo apt install python32 …...

【PyTorch】libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent

【PyTorch】libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent 1 报错信息2 原因3 解决方法 1 报错信息 conda install pytorch1.13.1 torchaudio0.13.1 torchvision0.14.1 cudatoolkit11.7 -c pytorch在 conda 环境中安装 torch 后测试&#xff0c;得到下面的错误&#x…...

快速利用c语言实现线性表(lineList)

线性表是数据结构中最基本和简单的一个&#xff0c;它是n的相同类型数据的有序序列&#xff0c;我们也可以用c语言中的数组来理解线性表。 一、线性表声明 我们定义一个线性表的结构体&#xff0c;内部有三个元素&#xff1a;其中elem是一个指针&#xff0c;指向线性表的头&am…...

量子计算与人工智能的交汇:科技未来的新引擎

引言 在当今飞速发展的科技世界&#xff0c;人工智能&#xff08;AI&#xff09;和量子计算无疑是最受瞩目的两大前沿领域。人工智能凭借其在数据处理、模式识别以及自动化决策中的强大能力&#xff0c;已经成为推动各行业数字化转型的重要力量。而量子计算则通过颠覆传统计算机…...

51单片机使用NRF24L01进行2.4G无线通信

本文并不打算详细介绍NRF24L01的各个功能寄存器及指令的详细用法&#xff0c;因为网上都可以搜到很多非常详细的教程文档&#xff0c;这里只是介绍一些基本概念、用法以及代码的解释&#xff0c;旨在帮助新手能够快速上手调通快速使用。 基础概念 该模块使用的是SPI协议&…...