【iOS】深色模式适配记录

2024-06-02 12:48
文章标签 模式 记录 ios 适配 深色

本文主要是介绍【iOS】深色模式适配记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注:
1、iOS13开始支持深色模式;
2、xib无法适配iOS13之前的版本,只能把要设置颜色的控件连线到代码中,代码控制颜色;
3、使用的 LLDark 库实现适配,链式语法,很方便;

实现:
1、创建 Dark 的类别,实现方法+ (NSDictionary<id, id> *)llDarkTheme,返回通用颜色配置,设置themeColor(nil)传nil的话会从这里适配颜色

@implementation NSObject(Dark)+ (NSDictionary<id, id> *)llDarkTheme {return @{UIColor.whiteColor : UIColorFromRGB(0x1b1b1b),UIColor.blackColor : UIColor.whiteColor,UIColorFromRGB(0x666666) : UIColor.whiteColor,UIColorFromRGB(0x333333) : UIColor.whiteColor,UIColorFromRGB(0x999999) : UIColor.whiteColor};
}

2、设置自适应深色模式颜色值

self.backView.backgroundColor = UIColor.whiteColor.themeColor(UIColor.blackColor);

themeColor() 括号里的是深色模式颜色值。

3、有些无法自动改变颜色的需要监听模式改变,手动设置颜色:

	self.themeDidChange = ^(id  _Nonnull bindView) {};self.themeDidChange(self);

例:

	CP_ThemeDidChange(^{weakself.titleLab.textColor = UIColorFromRGB(0x666666).themeColor(UIColor.whiteColor);});

封装的宏

	#define WeakObj(objc) autoreleasepool{} __weak typeof(objc) 	weak##objc = objc#define CP_ThemeDidChange(block)\@WeakObj(self);\self.themeDidChange = ^(id  _Nonnull bindView) {\block();\};\self.themeDidChange(self);\

有些适配了AttributedString的无法自动改变颜色就需要监听模式改变手动更改

4、CGColor也有对应方法 themeCGColor

_telView.layer.borderColor = UIColorFromRGB(0xeeeeee).themeCGColor(UIColorFromRGB(0x1b1b1b));

5、图片在Assets可以设置深色图片和浅色图片

这篇关于【iOS】深色模式适配记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024017

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回