DynamicColor 提供了强大的方法,可以在 Swift 和 SwiftUI 中以简单的方式操作颜色。
要求 • 用法 • 安装 • 贡献 • 联系方式 • 许可证 (MIT)
首先,DynamicColor 提供了有用的初始化器,可以使用十六进制字符串或值来创建颜色
let color = UIColor(hexString: "#3498db")
// equivalent to
// color = UIColor(hex: 0x3498db)
为了实现平台独立性,也可以使用类型别名 DynamicColor
let color = DynamicColor(hex: 0x3498db)
// On iOS, WatchOS or tvOS, equivalent to
// color = UIColor(hex: 0x3498db)
// On OSX, equivalent to
// color = NSColor(hex: 0x3498db)
您还可以使用多种方法(例如 toHexString
、toHex
、toRGBA
等)轻松检索 RGBA 值和组件。
从 v5 版本开始,DynamicColor 还支持使用 SwiftUI 创建和操作颜色的基本方法。
let color = Color(hex: 0x3498db)
这两个方法通过调整接收器的亮度来创建一个新的颜色。 您必须使用 0 到 1 之间的值。
let originalColor = DynamicColor(hexString: "#c0392b")
let lighterColor = originalColor.lighter()
// equivalent to
// lighterColor = originalColor.lighter(amount: 0.2)
let darkerColor = originalColor.darkened()
// equivalent to
// darkerColor = originalColor.darkened(amount: 0.2)
这些将调整颜色对象的饱和度,就像 darkened
和 lighter
调整亮度一样。 同样,您需要使用 0 到 1 之间的值。
let originalColor = DynamicColor(hexString: "#c0392b")
let saturatedColor = originalColor.saturated()
// equivalent to
// saturatedColor = originalColor.saturated(amount: 0.2)
let desaturatedColor = originalColor.desaturated()
// equivalent to
// desaturatedColor = originalColor.desaturated(amount: 0.2)
// equivalent to
// let grayscaledColor = originalColor.grayscaled(mode: .luminance)
let grayscaledColor = originalColor.grayscaled()
let grayscaledColorLuminance = originalColor.grayscaled(mode: .luminance)
let grayscaledColorLightness = originalColor.grayscaled(mode: .lightness)
let grayscaledColorAverage = originalColor.grayscaled(mode: .average)
let grayscaledColorValue = originalColor.grayscaled(mode: .value)
这些以与其他方法相同的方式调整颜色的色调值。 同样,它需要 0 到 1 之间的值来更新该值。
let originalColor = DynamicColor(hex: 0xc0392b)
// Hue values are in degrees
let adjustHueColor = originalColor.adjustedHue(amount: 45)
let complementedColor = originalColor.complemented()
色调是颜色与白色的混合,阴影是颜色与黑色的混合。 同样,它需要 0 到 1 之间的值来更新该值。
let originalColor = DynamicColor(hexString: "#c0392b")
let tintedColor = originalColor.tinted()
// equivalent to
// tintedColor = originalColor.tinted(amount: 0.2)
let shadedColor = originalColor.shaded()
// equivalent to
// shadedColor = originalColor.shaded(amount: 0.2)
这可以反转颜色对象。 红色、绿色和蓝色值被反转,而透明度保持不变。
let originalColor = DynamicColor(hexString: "#c0392b")
let invertedColor = originalColor.inverted()
这可以将给定的颜色与接收器混合。 它采用每个 RGB 分量的平均值,可以选择性地按给定的百分比(0 到 1 之间的值)进行加权。
let originalColor = DynamicColor(hexString: "#c0392b")
let mixedColor = originalColor.mixed(withColor: .blue)
// equivalent to
// mixedColor = originalColor.mixed(withColor: .blue, weight: 0.5)
// or
// mixedColor = originalColor.mixed(withColor: .blue, weight: 0.5, inColorSpace: .rgb)
DynamicColor 提供了一个有用的对象来处理渐变:DynamicGradient。 它将允许您从渐变中选择颜色,或者使用不同的颜色空间构建调色板(例如:RGB、HSL、HSB、Cie L*a*b*)。
让我们定义我们的参考颜色和渐变对象
let blue = UIColor(hexString: "#3498db")
let red = UIColor(hexString: "#e74c3c")
let yellow = UIColor(hexString: "#f1c40f")
let gradient = DynamicGradient(colors: [blue, red, yellow])
// equivalent to
// let gradient = [blue, red, yellow].gradient
让我们用 8 种颜色构建 RGB 调色板(默认颜色空间)
let rgbPalette = gradient.colorPalette(amount: 8)
现在,如果您想更改渐变颜色空间以获得不同的效果,只需编写以下几行
let hslPalette = gradient.colorPalette(amount: 8, inColorSpace: .hsl)
或者如果您更喜欢直接使用颜色数组,您可以
let labPalette = [blue, red, yellow].gradient.colorPalette(amount: 8, inColorSpace: .lab)
DynamicColor
还提供了许多其他有用的方法来操作颜色,例如十六进制字符串、颜色分量、颜色空间等。 要了解更多信息,请查看示例项目。
如果尚未安装 CocoaPods,请安装它
$ [sudo] gem install cocoapods
$ pod setup
转到您的 Xcode 项目的目录,创建并编辑您的 Podfile 并添加 DynamicColor
$ cd /path/to/MyProject
$ touch Podfile
$ edit Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'DynamicColor', '~> 5.0.0'
安装到您的项目中
$ pod install
从 .xcworkspace 文件(而不是通常的项目文件)在 Xcode 中打开您的项目
$ open MyProject.xcworkspace
您现在可以将 import DynamicColor
框架导入到您的文件中。
Carthage 是一个去中心化的依赖管理器,可以自动将框架添加到您的 Cocoa 应用程序中。
您可以使用 Homebrew 使用以下命令安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 DynamicColor
集成到您的 Xcode 项目中,请在您的 Cartfile
文件中指定它
github "yannickl/DynamicColor" >= 5.0.0
您可以使用 Swift Package Manager 通过将正确的描述添加到您的 Package.swift
文件来安装 DynamicColor
import PackageDescription
let package = Package(
name: "YOUR_PROJECT_NAME",
targets: [],
dependencies: [
.package(url: "https://github.com/yannickl/DynamicColor.git", from: "5.0.0")
]
)
请注意,Swift Package Manager 仍处于早期设计和开发阶段,有关更多信息,请查看其 GitHub 页面。
下载 该项目并将 DynamicColor
文件夹复制到您的项目中以使用它。
欢迎并鼓励贡献 ♡。
Yannick Loriot
版权所有 (c) 2015-present - Yannick Loriot
特此授予任何人免费获得本软件和相关文档文件(“软件”)副本的许可,可以无限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售本软件的副本,并允许向获得本软件的人员提供本软件,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同、侵权行为或其他方面,由本软件或本软件的使用或其他交易引起、产生或与之相关。