用于创建主题的 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
            }
        }
    }
}

有些代码错误。

  1. 您创建了一个名为 colorColor 的函数,但您的函数名为颜色
  2. 用错了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 有一种更简单的方法。请按照以下步骤操作:

  1. 转到“资产”文件(Xcode 左侧的列,在项目导航器中)
  2. Right-click 在资产列表(您看到“AccentColor”的列)和 select“新颜色集”
  3. Select 列表中的新项目名为“Color”(您可以根据需要更改名称,例如“NameOfTheColorCreated”)并打开 Inspector 列中的属性,在右侧屏幕.
  4. 您可以 select 为“任何外观”框上的浅色主题和“深色”框上的不同颜色
  5. 在您的代码中,您可以按如下方式使用它们:
let myColor = Color(UIColor(named: "NameOfTheColorCreated") ?? .white)

当您使用myColor时,如果您更改外观,颜色会自动更改。