如何使用 Swift 5 在 SwiftUI 中将颜色与 RGB 或十六进制值一起使用? [复制]
Posted
技术标签:
【中文标题】如何使用 Swift 5 在 SwiftUI 中将颜色与 RGB 或十六进制值一起使用? [复制]【英文标题】:How to use Color with RGB or hex value in SwiftUI using Swift 5? [duplicate] 【发布时间】:2020-09-30 17:51:30 【问题描述】:我目前正在尝试更改 SwiftUI
中标签的背景颜色。据我所知,SwiftUI 以 View 作为背景 Modifier 的参数。
但是,我遇到了一个我无法解决的问题:
我想通过使用十六进制代码或 RGB 值来更改标签的背景颜色。由于某种原因,这样做时背景颜色总是变为白色。
这很好用:
Label(
title: Text("someTitle") ,
icon: Image(systemName: "someName")
)
.background(Color.purple) // Using the provided standard Colors works perfectly fine.
但是,我想使用十六进制或 RGB 值创建背景颜色:
.background(Color(Color.RGBColorSpace.sRGB, red: 92, green: 225, blue: 230, opacity: 1))
// or
.background(Color(UIColor(red: 220, green: 24, blue: 311, alpha: 1)))
这不起作用,标签的背景颜色总是变回白色。如何实现这个目标?
【问题讨论】:
Color(UIColor(red: 220/255, green: 24/255, blue: 311/255, alpha: 1)
【参考方案1】:
UIColor init 方法UIColor(red:green:blue:alpha)
为每个值获取从 0 到 1 的浮点值。
任何 ≥ 1.0 的值都会“最大化”该颜色。所以像UIColor(red: 220, green: 24, blue: 311, alpha: 1)
这样的表达式会将所有3 个颜色通道和 alpha 设置为1.0,从而产生白色。 UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
您可以为 UIColor 创建一个扩展,添加方便的初始化程序,这些初始化程序将采用不同类型的值。首先是初始化器,每个初始化器的值都在 0-255 之间。然后你可以创建另一个初始化器UIColor.init(hexString:String)
。
从 0 到 255 取值的那个会更容易编写。采用十六进制字符串的那个将涉及实现一个十六进制解析器。我敢打赌,已经有人写过了。
看看这段代码,例如:
https://gist.github.com/anonymous/fd07ecf47591c9f9ed1a
【讨论】:
这应该作为重复关闭。顺便说一句,我的评论是完美的时机。同一秒 注意:在为ios 10或更高版本链接的应用程序中,颜色是在扩展的颜色空间中指定的,并且输入值永远不会被限制。当然对于这么高值它将使它总是返回白色以上是关于如何使用 Swift 5 在 SwiftUI 中将颜色与 RGB 或十六进制值一起使用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 SwiftUI 中将 swift 应用程序上的所有 Text() 设置为相同的颜色
如何使用 Swift 5 /SwiftUI 将 AVAudioRecorder 文件上传到 Firebase 存储?
如何使用 SwiftUI 按按钮移动到另一个视图 - swift 5.5
Helo 在 xcode 中的调试器上,使用 swift 和 swiftUI 5