用于创建主题的 SwiftUI 颜色扩展
SwiftUI color extension for creating theme
我想使用 swift 颜色创建一个主题集,但我不知道我在哪里弄错了。因为这个抛出错误。
根据下面的代码,我认为这是显而易见的,但我是 SwiftUI 的新手!
谢谢。
Import SwiftUI
enum Colors {
enum Content {
static var contentStrongestColor: Color {
return color(
dark: UIColor(red: 0.21568627655506134, green: 0.2549019753932953, blue: 0.3176470696926117, alpha: 1),
light: UIColor(red: 0.8784313797950745, green: 0.8784313797950745, blue: 0.8784313797950745, alpha: 1)
)
}
}
enum Background {
static var contentDefaultColor: Color {
return color(
dark: UIColor(red: 0.06666667014360428, green: 0.09019608050584793, blue: 0.15294118225574493, alpha: 1),
light: UIColor(red: 1, green: 1, blue: 1, alpha: 1)
)
}
}
}
extension Colors {
static func colorColor(dark: Color, light: Color) -> Color{
return Color { (UITraitCollection: UITraitCollection)
switch UITraitCollection.userInterfaceStyle {
case .dark: return dark
case .light: return light
default: return light
}
}
}
}
有些代码错误。
- 您创建了一个名为
colorColor
的函数,但您的函数名为颜色
- 用错了
traitCollection
这是固定代码。
enum Colors {
enum Content {
static var contentStrongestColor: Color {
return setColor(
dark: Color(red: 0.21568627655506134, green: 0.2549019753932953, blue: 0.3176470696926117),
light: Color(red: 0.8784313797950745, green: 0.8784313797950745, blue: 0.8784313797950745)
)
}
}
enum Background {
static var contentDefaultColor: Color {
return setColor(
dark: Color(red: 0.06666667014360428, green: 0.09019608050584793, blue: 0.15294118225574493),
light: Color(red: 1, green: 1, blue: 1)
)
}
}
}
extension Colors {
static func setColor(dark: Color, light: Color) -> Color {
switch UIScreen.main.traitCollection.userInterfaceStyle {
case .dark: return dark
case .light: return light
default: return light
}
}
}
如果您的目的是为浅色主题使用一种颜色,为深色主题使用另一种颜色,Xcode 有一种更简单的方法。请按照以下步骤操作:
- 转到“资产”文件(Xcode 左侧的列,在项目导航器中)
- Right-click 在资产列表(您看到“AccentColor”的列)和 select“新颜色集”
- Select 列表中的新项目名为“Color”(您可以根据需要更改名称,例如“NameOfTheColorCreated”)并打开 Inspector 列中的属性,在右侧屏幕.
- 您可以 select 为“任何外观”框上的浅色主题和“深色”框上的不同颜色
- 在您的代码中,您可以按如下方式使用它们:
let myColor = Color(UIColor(named: "NameOfTheColorCreated") ?? .white)
当您使用myColor
时,如果您更改外观,颜色会自动更改。
我想使用 swift 颜色创建一个主题集,但我不知道我在哪里弄错了。因为这个抛出错误。 根据下面的代码,我认为这是显而易见的,但我是 SwiftUI 的新手!
谢谢。
Import SwiftUI
enum Colors {
enum Content {
static var contentStrongestColor: Color {
return color(
dark: UIColor(red: 0.21568627655506134, green: 0.2549019753932953, blue: 0.3176470696926117, alpha: 1),
light: UIColor(red: 0.8784313797950745, green: 0.8784313797950745, blue: 0.8784313797950745, alpha: 1)
)
}
}
enum Background {
static var contentDefaultColor: Color {
return color(
dark: UIColor(red: 0.06666667014360428, green: 0.09019608050584793, blue: 0.15294118225574493, alpha: 1),
light: UIColor(red: 1, green: 1, blue: 1, alpha: 1)
)
}
}
}
extension Colors {
static func colorColor(dark: Color, light: Color) -> Color{
return Color { (UITraitCollection: UITraitCollection)
switch UITraitCollection.userInterfaceStyle {
case .dark: return dark
case .light: return light
default: return light
}
}
}
}
有些代码错误。
- 您创建了一个名为
colorColor
的函数,但您的函数名为颜色 - 用错了
traitCollection
这是固定代码。
enum Colors {
enum Content {
static var contentStrongestColor: Color {
return setColor(
dark: Color(red: 0.21568627655506134, green: 0.2549019753932953, blue: 0.3176470696926117),
light: Color(red: 0.8784313797950745, green: 0.8784313797950745, blue: 0.8784313797950745)
)
}
}
enum Background {
static var contentDefaultColor: Color {
return setColor(
dark: Color(red: 0.06666667014360428, green: 0.09019608050584793, blue: 0.15294118225574493),
light: Color(red: 1, green: 1, blue: 1)
)
}
}
}
extension Colors {
static func setColor(dark: Color, light: Color) -> Color {
switch UIScreen.main.traitCollection.userInterfaceStyle {
case .dark: return dark
case .light: return light
default: return light
}
}
}
如果您的目的是为浅色主题使用一种颜色,为深色主题使用另一种颜色,Xcode 有一种更简单的方法。请按照以下步骤操作:
- 转到“资产”文件(Xcode 左侧的列,在项目导航器中)
- Right-click 在资产列表(您看到“AccentColor”的列)和 select“新颜色集”
- Select 列表中的新项目名为“Color”(您可以根据需要更改名称,例如“NameOfTheColorCreated”)并打开 Inspector 列中的属性,在右侧屏幕.
- 您可以 select 为“任何外观”框上的浅色主题和“深色”框上的不同颜色
- 在您的代码中,您可以按如下方式使用它们:
let myColor = Color(UIColor(named: "NameOfTheColorCreated") ?? .white)
当您使用myColor
时,如果您更改外观,颜色会自动更改。