SwiftUI之ColorScheme-LightAndDark

news/2024/7/20 22:30:06 标签: swiftui, ios, swift

在SwiftUI中,ColorScheme是一种用于定义应用程序的颜色方案的枚举类型。颜色方案可以是浅色(light)或深色(dark),其中浅色方案适用于明亮的环境,深色方案适用于暗色环境。

可以通过在视图中使用ColorScheme来设置不同颜色方案下的颜色。例如,可以使用.environment(.colorScheme, .light)将视图设置为浅色方案,或使用.environment(.colorScheme, .dark)将视图设置为深色方案。

以下是一个示例,演示了如何使用颜色方案来自定义按钮的外观:

swift">struct ButtonView: View {
    @Environment(\.colorScheme) var colorScheme
    
    var body: some View {
        Button(action: {
            // 按钮被点击
        }) {
            Text("Click me!")
                .foregroundColor(colorScheme == .light ? .black : .white)
                .padding()
                .background(colorScheme == .light ? Color.white : Color.black)
                .cornerRadius(10)
        }
    }
}

在上面的示例中,foregroundColor和background根据当前的colorScheme来设置按钮的文本颜色和背景颜色。如果颜色方案为浅色,则文本颜色为黑色,背景颜色为白色;如果颜色方案为深色,则文本颜色为白色,背景颜色为黑色。

使用ColorScheme可以轻松地为应用程序的不同环境提供合适的颜色方案,并使界面在不同环境中保持一致的外观。


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

相关文章

25改考408最新资讯!拷贝

东北大学 东北大学计算机考研全面改考408 东北大学计算机学院官网:http://www.cse.neu.edu.cn/6274/list.htm 东北大学计算机考研全面改考408 公告原文 东北大学计算机科学与工程学院关于调整2025年硕士研究生招生计算机科学与技术、计算机技术、人工智能专业初试…

ld 链接脚本 和 链接脚本中 地址段相关语句介绍

ld 链接脚本 和 链接脚本中 地址段相关语句介绍 概述 在C语言编程中,LD文件通常指链接脚本(Linker Script)。链接脚本由链接器(链接程序,如 GNU 的 ld)用于控制链接过程,最终生成ELF文件。它可…

K8S实现零宕机实践

越来越多的大厂都在上云、上容器、上K8S编排,K8S和容器云确实帮助我们解决了很多问题。但是,带来方便的同时,也让我们的架构变得更复杂了,更难于依靠“老经验”来解决问题了。虽然我们不用再费力考虑一层的问题,怎么实…

MS5583N高分辨率模数转换器

产品简述 MS5583N 是一款高分辨率模数转换器,内部集 成高阶 Σ-Δ 调制器、低噪声可编程增益放大器、多 路输入选择器和多种内部数字滤波器。其转换速率 从 250SPS 到 4kSPS 。此外,芯片内部集成失调校准 寄存器和增益校准寄存器。 MS5583N …

R语言快速读取数据vroom

R语言快速读取大文件 想象一下,一辆赛车在巴音布鲁克赛道上,嗖的一声飞驰而过,这种场景是不是很酷!R语言中,如果用vroom读取一个GB级别的大文件,也能体会到这种速度感。 今天分享的一个R小技巧是读取大文件…

【CSS】清除浮动

清除浮动 1、为什么需要清除浮动? ​ 由于父级盒子很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为 0 时,就会影响下面的标准流盒子。 2、清除浮动本质 清除浮动的本质是清除浮动元素造成…

[力扣 Hot100]Day50 二叉树中的最大路径和

题目描述 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &…

WPF —— 数据绑定(初级)

数据绑定:把数据以一个变量的方式绑定到一个标签上,以后可以通过对变量修改,达到修改属性的目的 之前修改某一个label标题,之前写法this.l1.content"李四" 数据绑定写法:label content {Bind path title} …