我想使用UIColor作为对象的前景色,但是我不知道如何将UIColor转换为颜色
var myColor: UIColor
RoundedRectangle(cornerRadius: 5).foregroundColor(UIColor(myColor))
答案 0 :(得分:21)
从beta 5开始,您可以从UIColor创建颜色:
Color(UIColor.systemBlue)
答案 1 :(得分:2)
使用两个帮助程序扩展名:
要从UIColor
中提取成分:
extension UIColor {
var rgba: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
var red: CGFloat = 0
var green: CGFloat = 0
var blue: CGFloat = 0
var alpha: CGFloat = 0
getRed(&red, green: &green, blue: &blue, alpha: &alpha)
return (red, green, blue, alpha)
}
}
与init
一起UIColor
:
extension Color {
init(uiColor: UIColor) {
self.init(red: Double(uiColor.rgba.red),
green: Double(uiColor.rgba.green),
blue: Double(uiColor.rgba.blue),
opacity: Double(uiColor.rgba.alpha))
}
}
用法:
Color(uiColor: .red)
答案 2 :(得分:1)
在带有方便扩展名的Swift UI自定义颜色中:
var body: some View {
Text("Hello World")
.foregroundColor(Color(UIColor.purple.normal))
.background(Color(UIColor.gray.normal))
}
并使用它:
{{1}}
使用Xcode 11.0 beta 6编辑,并且代码可能会更改
答案 3 :(得分:0)
我是一个非常老的业余爱好者。这是一种对我有效的方法。是的,我对Constant.swift文件中的可重用语句使用了全局变量。此示例是内联的,因此更易于查看。我不是说这是要走的路,这只是我的老路。
import SwiftUI
// named color from the developer's pallet
let aluminumColor = Color(UIColor.lightGray)
// a custom color I use often
let butterColor = Color.init(red: 0.9993399978,
green: 0.9350042167,
blue: 0.5304131241)
// how I use this in a SwiftUI VStack:
Text("Fur People")
.font(.title)
.foregroundColor(aluminumColor)
.shadow(color: butterColor, radius: 4, x: 2, y: 2)
.minimumScaleFactor(0.75)
答案 4 :(得分:0)
它具有一个本机初始化程序,该初始化程序以UIColor
作为参数:
Color(.red) // or any other UIColor you need
您可以为其实现自定义变量,使其更像cgColor
和ciColor`
extension UIColor {
/// The SwiftUI color associated with the receiver.
var suColor: Color { Color(self) }
}
所以它就像:
UIColor.red // UIKit color
UIColor.red.suColor // SwiftUI color
UIColor.red.cgColor // Core graphic color
UIColor.red.ciColor // Core image color
Color.red
和UIColor.red
不同!它们具有不同的值和彼此外观不同。所以不要假设这毫无价值
答案 5 :(得分:0)
创建这样的扩展名:
extension Color {
static let someColor = Color(UIColor.systemIndigo) // << Select any UIColor
}
用法:
struct ContentView: View {
var body: some View {
Rectangle()
.frame(width: 100, height: 100)
.foregroundColor(.someColor)
}
}