0xWDG/Colors
Colors is a Swift Package to enable all system colors in SwiftUI trough a Color extension. Colors which were previously only available in UIColor/NSColor are now available in Color as well.
Requirements
- Swift 5.9+ (Xcode 15+)
- iOS 13+, macOS 10.15+
Installation (Pakage.swift)
dependencies: [
.package(url: "https://github.com/0xWDG/Colors.git", branch: "main"),
],
targets: [
.target(name: "MyTarget", dependencies: [
.product(name: "Colors", package: "Colors"),
]),
]Installation (Xcode)
- In Xcode, open your project and navigate to File β Swift Packages β Add Package Dependency...
- Paste the repository URL (
https://github.com/0xWDG/Colors) and click Next. - Click Finish.
Usage
import SwiftUI
import Colors
struct ContentView: View {
var body: some View {
VStack {
Text("Hello, World!")
.foregroundColor(Color.disabledControlTextColor)
}
.padding()
}
}Extract color from UIColor/NSColor
Use this to add new/missing colors to the BaseColor and Color extension.
Extract from UIKit:
UIColor.systemPink.createInitializerFor(color: "systemPink")Extract from AppKit:
NSColor.systemPink.createInitializerFor(color: "systemPink")Output:
/// A color that represents the system-provided systemPink color.
public static let systemPink = Color.dynamicColor(
light: .init(red: 1.00, green: 0.18, blue: 0.33, alpha: 1.00),
dark: .init(red: 1.00, green: 0.18, blue: 0.33, alpha: 1.00)
)How to add a new color
- Add the color to the
BaseColorstruct.
``swift /// A color that represents the system-provided systemPink color. public static let systemPink = Color.dynamicColor( light: .init(red: 1.00, green: 0.18, blue: 0.33, alpha: 1.00), dark: .init(red: 1.00, green: 0.18, blue: 0.33, alpha: 1.00) ) ``
- Add the color to the
Colorextension.
- Use the native Color,NSColor,UIColor.colorName where possible. - Add #if os(iOS) / #if os(macOS) where needed. - Example (works on almost all versions): ``swift /// A color that represents the system-provided pink color. public static var systemPink: Color { #if os(iOS) || os(tvOS) Color(UIColor.systemPink) #elseif os(macOS) Color(NSColor.systemPink) #else BaseColor.systemPink #endif } ` - Example 2 (works from a specific iOS/macOS version): `swift /// A color that represents the system-provided cyan color. public static var systemCyan: Color { #if os(iOS) || os(tvOS) if #available(iOS 15.0, ) { Color(UIColor.systemCyan) } else { BaseColor.systemCyan } #elseif os(macOS) if #available(macOS 12.0, ) { Color(NSColor.systemCyan) } else { BaseColor.systemCyan } #else BaseColor.systemCyan #endif } ``
Contact
π¦ @0xWDG π mastodon.social/@0xWDG π¦ @0xWDG π§΅ @0xWDG π wesleydegroot.nl π€ Discord
Interested learning more about Swift? Check out my blog.
Package Metadata
Repository: 0xWDG/Colors
Homepage: https://0xwdg.github.io/Colors/
Stars: 38
Forks: 0
Open issues: 0
Default branch: main
Primary language: swift
License: MIT
Topics: 0xwdg, appkit, color, hacktoberfest, nscolor, package, spm, swift, swiftlang, swiftui, uicolor, uikit, xcode
README: README.md