swiftUi——颜色

news/2024/7/20 22:02:34 标签: swiftui, ios, swift

在SwiftUI中,您可以使用Color结构来表示颜色。Color可以直接使用预定义的颜色,例如.red.blue.green等,也可以使用自定义的RGB值、十六进制颜色代码或者系统提供的颜色。

1. 预定义颜色

Text("预定义颜色").foregroundColor(.red)
Text("预定义颜色").foregroundColor(Color.red)

预定义颜色查看 Color | Apple Developer Documentation

2. 使用RGB值创建颜色

Color(red: 0.1, green: 0.2, blue: 0.3, opacity:1) // RGB颜色值在0到1之间,opacity透明度0-1

3. 使用十六进制颜色代码

使用十六进制颜色代码需要一个小的扩展,因为SwiftUI原生并不支持十六进制初始化颜色

extension Color {
    init(hex: String) {
        let scanner = Scanner(string: hex)
        _ = scanner.scanString("#") // 跳过'#'字符
        
        var rgbValue: UInt64 = 0
        scanner.scanHexInt64(&rgbValue)
        
        let r = Double((rgbValue & 0xFF0000) >> 16) / 255.0
        let g = Double((rgbValue & 0xFF00) >> 8) / 255.0
        let b = Double(rgbValue & 0xFF) / 255.0
        
        self.init(red: r, green: g, blue: b)
    }
}

// 使用扩展
let customColor = Color(hex: "#123456")
 Text("使用十六进制颜色代码").foregroundColor(Color.green) // 设置文本颜色
                    .background(Color(hex: "#123456")) // 设置背景颜色,使用了扩展

上述代码的foregroundColorbackground方法接受Color实例,并分别设置文本的前景色和背景色。

4. 使用与UIColor相同的系统颜色

let systemBackground = Color(UIColor.systemBackground) // 系统背景色

5. 渐变色

使用了LinearGradient作为文本的背景,然后使用.mask修饰符将同样大小和内容的Text覆盖在它上面。渐变背景只会显示在掩码文本的形状内部,这样看起来文本就像是有渐变色效果一样。

使用.mask是因为我们要确保渐变填充文本内部的形状,而不仅仅在其背景区域。.foregroundColor(nil)则是为了确保文本本身不显示默认的前景颜色,从而允许掩码显示渐变色。
 

Text(" 渐变色").font(.system(size:80)).fontWeight(.bold).foregroundColor(.clear)
                .background(
                    LinearGradient(gradient: Gradient(colors: [Color.red, Color.blue]),
                                   startPoint: .leading,
                                   endPoint: .trailing)
                )
                .mask(
                    Text("渐变色")
                        .font(.system(size:80)).fontWeight(.bold)
                )

我们创建了一个LinearGradient,它有红色到蓝色的渐变。该渐变被设定为文本的前景色,从而产生了一个从左到右的渐变效果。

如果想要的渐变方向不同,你只需调整startPointendPoint的参数。

你也能使用.background来相似地设置文本的背景渐变色。但是,需要记住的是,.foreground修饰符是直接应用到文本上的,相对于.background来说可能是更多想要的效果,因为.background修饰符会在文本下面应用渐变色,而不会直接改变文本颜色。


 

6. 阴影

使用.shadow()修饰符来给任何视图(包括文本)添加阴影效果。这个修饰符允许你指定阴影的颜色、半径、以及 x 和 y 轴的偏移量。

Text("这是带阴影的文字")
    .font(.largeTitle)
    .shadow(color: .gray, radius: 2, x: 0, y: 2)

在这个例子中,文本将显示为大标题字体,并且有一个灰色的阴影。阴影的半径是2,偏移量在 x 轴方向是 0,在 y 轴方向是 2。 

 效果如下


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

相关文章

【Go自学版】02-goroutine

利用时间片分割进程,致使宏观上A,B,C同时执行(并发) CPU利用率包含了执行和切换,进程/线程的数量越多,切换成本也会增大 最大并行数:GOMAXPROCS work stealing: 偷其他队列的G hand off: 当前G1阻塞&#…

Android 记录一些Framework开发的命令

源码编译流程 1. "source build/envsetup.sh" (source可以用 . 代替,即". build/envsetup.sh") 2. "lunch",并选择要编译的项目或者"choosecombo" 3. "make idegen -j4" (这里的 -j4 表示用4线程来…

卷积神经网络18种有效创新方法汇总,涵盖注意力机制、空间开发等7大方向

作为深度学习中非常重要的研究方向之一,卷积神经网络(CNN)的创新不仅表现在提升模型的性能上,还更进一步拓展了深度学习的应用范围。 具体来讲,CNN的创新架构和参数优化可以显著提高模型在各种任务上的性能。例如&…

分布式uuid常用的算法

1、雪花算法介绍 面试官:集群高并发情况下如何实现分布式唯一全局id生成? - 墨天轮 2、百度的UidGenerator 介绍,适合容器化配置,同时兼容springboot,只需要mysql数据库, https://github.com/baidu/uid-…

一文带你了解架构设计

关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、架构简介 想做好架构设计,第一步是将一个 IT 系统从应用层级至底层基础设施,全部拆解为一个个应用模块,可以称之为“元素”或“组件”…

RHEL8_Linux网络时间服务器

本章主要介绍网络时间服务器 使用chrony配置时间服务器配置chrony客户端向服务器同步时间 1.时间同步的必要性 一些服务对时间要求非常严格,例如,图20-1所示的由三台服务器搭建的ceph集群。 这三台服务器的时间必须保持一致,如果不一致&…

Ubuntu 20.04安装禅道开源版

## Ubuntu 20.04安装禅道开源版 ## jerry 20231208 # 下载解压 cd /opt wget https://dl.cnezsoft.com/zentao/18.9/ZenTaoPMS-18.9-zbox_amd64.tar.gz tar xvzf ZenTaoPMS-18.9-zbox_amd64.tar.gz # 配置(没啥可配的) # 启动 启动所…

单细胞seurat-细胞比例分析-画图详细教程

大家好,今天我们来画单细胞中最简单的细胞比例图~ 1.老规矩,先加载pbmc数据 dir.create("~/gzh/细胞比例") setwd("~/gzh/细胞比例")subset_datareadRDS("~/gzh/pbmc3k_final.rds") table(stringr::str_split(string c…