iOS黑暗模式tableViewCell

2023-11-08

背景

iOS 13 之后,App可以支持黑暗模式,如不需要可以直接禁掉。参考iOS系统中的自带软件的黑暗模式的适配,可以看看 设置 页面在黑暗(dark)模式下和正常(light)模式下的显示,以此参考来对我们自己的App进行黑暗模式的适配。

基础

  • UITraitCollection.currentTraitCollection.userInterfaceStyle

判断当时处于哪种模式

    if (UITraitCollection.currentTraitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {

    } else {

    }
  • [UIColor colorWithDynamicProvider…

返回对应模式下的UIColor对象

[UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull traitCollection) {
            if (traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
                return [UIColor blackColor];
            } else {
                return [UIColor colorWithRed:239/255.0 green:239/255.0 blue:244/255.0 alpha:1.0];
            }
        }];
  • traitCollectionDidChange:(UITraitCollection *)previousTraitCollection

模式改变监听

- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
    
    [self.tableView reloadData];
}

UITableViewCell

- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (UITraitCollection.currentTraitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
        cell.backgroundColor = [UIColor systemFillColor];
    } else {
        cell.backgroundColor = [UIColor whiteColor];
    }
}

不同模式下显示不同的颜色,仅仅用上述方法的话,会存在一个漏洞,那就是,切换App到后台,然后切换成另外一种模式,这时候,cell的颜色还是之前的,解决办法是在监听里刷新cell的显示。

- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
    
    [self.tableView reloadData];
}

其他的tableView的适配,都大同小异,类似的处理就可以了。

其他

  • 导航栏
+ (UIColor *)navigationBackgroundColor {
    if (@available(iOS 13.0, *)) {
        return [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull traitCollection) {
            if (traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
                return [UIColor blackColor];
            } else {
                return [UIColor whiteColor];
            }
        }];
    }
    return [UIColor whiteColor];
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS黑暗模式tableViewCell 的相关文章

  • [Utility] +[AFAggregator logDictationFailedWithError:] Error Domain=kAFAssistantErrorDomain Code=7 “

    语音识别在识别多次之后报错 不能继续工作 语音识别报错 Utility AFAggregator logDictationFailedWithError Error Domain kAFAssistantErrorDomain Code 7
  • iOS 导航栏设置

    导航栏右侧的Done按钮怎么是蓝色的 导航栏右侧按钮大小设置 导航栏标题按钮样式设置 导航栏设置颜色 导航栏变白不显示颜色 iOS 13 之后使用新的API和类 UINavigationBarAppearance 来设置导航栏的标题大小 颜
  • Code=201 “Siri and Dictation are disabled“

    iOS 15 之前的语音识别是使用SpeechKit和AVFoundation两个框架来配合使用 其中主要的类有SFSpeechRecognizer SFSpeechAudioBufferRecognitionRequest SFSpeec
  • Unable to install “xxx“

    Unable to install xxx Xcode Could not inspect the application package macOS Version 11 4 Build 20F71 Xcode 12 5 1 18212
  • 基于AF的HTTP

    搬搬砖头而已 iOS 基于AF的HTTP请求类 OKHTTPRequestManager h OKHTTPRequestManager h LL Created by Morris on 2020 9 22 Copyright 2020 L
  • iOS PopoverController

    iOS PopoverController 背景 UIPopoverController 在iOS9 0 已废弃 UIKIT EXTERN API DEPRECATED UIPopoverController is deprecated P
  • building for iOS Simulator, but linking in object file built for iOS, for architecture arm64

    Xcode 12以及以上版本 使用模拟器编译 使用真机不会报错 或者使用真机编译会报错 使用模拟器不会报错 ld in Users xxx Documents work svn EM iOS xxx xxx WarehouseMap Ext
  • oc swift 混编

    oc 和 swift 互调 swift 中使用 oc swift 中调用 oc 的类 创建一个oc的项目 在项目里创建swift文件的话 Xcode会自动提示 要不要创建桥接文件 如下图所示 选择Create Bridging Header
  • AF Http request 代理形式回调

    AF是以block的方式将请求结果返回 这样的处理思路我感觉很好 每个请求都单独处理自己的回调 AF的请求也可以使代理的形式进行回调 HIHTTPRequest 以代理的形式回调的话需要创建一个请求类 然后将请求结果以代理的形式回调 HIH
  • Xcode Executable Not Found

    问题 Xcode编译项目报Executable Not Found的错误 Details Details Executable Not Found Domain DVTMachOErrorDomain Code 5 Recovery Sug
  • building for iOS Simulator-arm64 but attempting to link with file built for iOS Simulator-x86_64

    Xcode 13 M1 Macboook Pro 使用模拟器编译iOS项目报 building for iOS Simulator arm64 but attempting to link with file built for iOS S
  • iOS 蓝牙扫描枪扫描内容不正确

    背景 在移动设备上 使用蓝牙扫描枪 相当于接入了一下外接键盘 我们的客户使用我们的App 并连接蓝牙扫码枪 将扫描的内容传输到我们的App中 App再做出对应的响应 举个例子 较为常见的应用场景就是 拣货员拿着扫码枪 扫描产品上的UPC码
  • iOS tableView setAccessoryView 导致应用程序卡死问题

    iOS TableView TableViewCell setAccessoryView cell setAccessoryView cell accessoryView xxx iOS 14 使用 cell setAccessoryVie
  • decimals数据格式化

    文章目录 decimals数据格式化 1 保留小数 1 1 iOS 2 去除小数点后多余的 0 2 1 iOS 2 2 C decimals数据格式化 格式化数据 以便移动端UI显示 1 保留小数 无小数部分 则保留整数 有小数部分保留两位
  • iOS黑暗模式tableViewCell

    背景 iOS 13 之后 App可以支持黑暗模式 如不需要可以直接禁掉 参考iOS系统中的自带软件的黑暗模式的适配 可以看看 设置 页面在黑暗 dark 模式下和正常 light 模式下的显示 以此参考来对我们自己的App进行黑暗模式的适配
  • The file “xxx” couldn’t be opened because you don’t have permission to view it. You don’t have permi

    问题 Xcode 使用真机编译不报错 运行报如下错误 The file xxx couldn t be opened because you don t have permission to view it You don t have p
  • Xcode编译报错不提示

    M1 Xcode Version 12 5 1 12E507 编译项目之后提示 Build Failed 但是并不报 小红点 不指示是哪个文件报错 不知道去哪里找报错文件了 Xocode 工具栏上有这个按钮 选择之后点击某次编译 如果有错误
  • 使用AFNetworking(二)

    文章目录 HIHTTPSessionManager HIHTTPRequestManager HIHTTPRequest 注意事项 写代码没有什么具体的规范和方式 只是哪个更加合理罢了 老的项目HTTP请求使用的是AFNetworking找
  • AppStore 提审时的“出口合规证明”处理

    对于加密的管理 Apple不比之前严格了 一般选 否 也能通故审核 每次提交审核的时候都会让确认是否使用了Apple以的加密算法 在窗口提示了我们可以看到 可以在Xcdoe的info plist文件中增加App Uses Non Exemp
  • ASI ‘CFNetwork SSLHandshake failed (-9824)‘

    文章目录 ASI CFNetwork SSLHandshake failed 9824 问题 解决 思考 参考 ASI CFNetwork SSLHandshake failed 9824 10年的老项目 网络库使用是ASIHTTPRequ

随机推荐

  • python 时间格式datetime、str与date的相互转换

    在写项目的时候经常会用到时间格式 以及它们之间的相互转化 常用的日期数据格式datetime datetime str datetime date 在使用的时候先导入datetime模块 from datetime import datet
  • 机考[61 -70]

    华为机考 061 寻找身高相近的小朋友 062 寻找相同子串 063 一种字符串压缩表示的解压 064 英文输入法 065 用户调度问题 066 用连续自然数之和来表达整数 067 找车位 068 找出符合要求的字符串子串 069 找朋友
  • ESP32-C3入门教程 基础篇(五、RMT应用 — 控制SK6812全彩RGB 灯)

    测试第五课 本来是准备测试一下PWM驱动 SK6812 RGB灯 但是研究了一段时间 发现在ESP32 C3 有更好而且现成的方式 实现 SK6812 的控制 使用PWM也不是不可以 只是对于初学者 需要多花好多时间 所以本文还是先以ESP
  • ctf-web-sql注入

    题目链接 跳转提示 打开网页 一个登陆页面 根据题是本题题型是基于布尔的SQL盲注 首先在用户名处输入admin 得到结果 即密码确为admin 而如果不输入用户名直接输入密码 发现报错 可见后台是先判断用户名是否正确存在 当用户名正确后再
  • 【强推】10个有趣的Python程序

    1 引言 Python程序有许多模块和第三方包 这非常有助于高效编程 了解这些模块的正确使用方法是很重要的 在本文中 主要介绍一些非常实用的一些Python常见的模块 闲话少说 我们直接开始吧 2 Python伪信息生成器 创建一个程序 生
  • Visual Basic环境:未能加载基类“ShaftAssDesign.XFrmTopClass”。

    文件中的类都不能进行设计 因此未能为该文件显示设计器 设计器检查出文件中有以下类 FrmSetSearch 未能加载基类 ShaftAssDesign XFrmTopClass 请确保已引用该程序集并已生成所有项目 因为vs的版本不同 所以
  • 阿里云OSS+PicGo建立图床踩坑

    在本地写md文档时候插入图片是一件挺麻烦的事情 使用本地图片的话 每次在给别人分享文档或者上传博客的时候就比较难顶了 网上有两种方法可以解决这个问题 一种是使用图片的base64编码 但是图片转换为base64编码之后 编码长度会很大 文档
  • Mac环境下安装Pod

    Mac环境下安装Pod Mac环境下安装Pod 阿里云开发者社区 aliyun com 简介 Mac 环境下安装Pod Pod安装需要ruby ruby需要rvm可以终端中查看rvm 安装没有 如果没有安装则按以下步骤安装 rvm安装 cu
  • implicit declaration of function —— 函数隐式声明 警告

    implicit declaration of function 函数隐式声明 警告 文章目录 错误情况 原因 解决方法 错误情况 在学习 c 语言的过程中 手动使用 clang 进行编译的时候 碰到自定义函数会报出下面的错误 hello
  • 物联网毕业设计 单片机智能温控风扇设计与实现

    文章目录 1 简介 2 绪论 2 1 课题背景 3 系统设计 3 1 系统架构 3 2 硬件部分 3 2 1 DS18B20 简介 3 2 2 LCD1602 液晶屏简介 3 3 软件部分 3 3 1 整体软件流程 3 3 2 初始化 3
  • 数据库Sqlite和mysql

    致谢 https www ssdax com 2188 html https blog csdn net zbw1185 article details 47975965 1概述 数据库可以分为两类 关系型数据库和内存数据库 DB Engi
  • 【算法】McCode度量法

    目录 一 什么是McCode度量法 二 McCabe度量方法计算程序复杂度 三 真题演练 一 什么是McCode度量法 McCabe度量法是由托马斯 麦克凯提出的一种基于程序控制流的复杂性度量方法 McCabe复杂性度量又称环路度量 它认为
  • android实现箭头流程列表_Android弹出选项框及指示箭头动画选择

    Android弹出选项框及指示箭头动画选择 Android原生的Spinner提供了下拉列表选项框 但在一些流行的APP中 原生的Spinner似乎不太受待见 而通常会有下图所示的下拉列表选项框 初始化状态 点击弹出下拉选择选项框 选中后
  • 运维自动抓包脚本tcpdump

    文章目录 运维自动抓包脚本 抓包效果 tcpdump sh 运维自动抓包脚本 基于tcpdump命令写的抓包脚本工具 抓包解释参考 tcpdump抓包解释 抓包效果 root h11 sh scripts tcpdump sh gt gt
  • STM32外设之USART

    第二章 初识USART 目录 第二章 初识USART 前言 一 USART是什么 二 使用步骤 1 功能框图 2 寄存器 3 固件库编程 总结 前言 本章进行初识STM32F103串口 讲解通信方式 主要了解串口相应寄存器 串口的库函数编程
  • Compare Data from the Same Table in two Different Environments

    The Oracle SQL below compares table1 that has 2 key fields and 3 regular fields Note For the SQL below to work your pass
  • 软件测试面试题(带答案)

    1 请自我介绍一下 需简单清楚的表述自已的基本情况 在这过程中要展现出自信 对工作有激情 上进 好学 面试官您好 我叫 今年26岁 来自江西九江 就读专业是电子商务 毕业后就来深圳工作 有三年的软件测试工程师的经验 我性格比较开朗 能和同事
  • IDEA使用两种方式实现第一个Servlet程序

    第一种方式 实现Servlet接口 1 新建一个普通的maven工程 首先新建一个普通的maven工程 记得不要勾选下面的webapp 这是新建好的目录结构 然后右键项目选择 Add Framework support 最后点击web Ap
  • php生成的apk无法安装,xapk怎么安装

    安装xapk的方法 1 将 xapk改为 zip并解压其中的apk文件和android文件夹 然后安装apk并将相关文件复制到手机内存的android的obb中 2 下载Xapk安装器 然后选择需要安装的程序进行安装即可 本文示例操作环境
  • iOS黑暗模式tableViewCell

    背景 iOS 13 之后 App可以支持黑暗模式 如不需要可以直接禁掉 参考iOS系统中的自带软件的黑暗模式的适配 可以看看 设置 页面在黑暗 dark 模式下和正常 light 模式下的显示 以此参考来对我们自己的App进行黑暗模式的适配