【Xcode/Swift】Color Set & Extensionで色を管理する方法

今回の内容

・Color Setを作ってみる

・Extensionで色を管理する

Color Setの追加方法


Color Extensionファイルを追加

import UIKit

extension UIColor {
    static let labelColor = UIColor(named: "Label_Color") // Color Setで設定した名前
    static let backgroundColor = UIColor(named: "Background_Color")
}
import SwiftUI

extension Color {
    static let labelColor = Color("Label_Color")
    static let backgroundColor = Color("Background_Color")
}

使い方

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet private weak var label: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        label.textColor = UIColor.labelColor // ここで使える
        self.view.backgroundColor = UIColor.backgroundColor
    }

}
// 使う時
Button {
  print("ボタンが押されたよ")
} label: {
  Text("ボタンだよ")
    .foregroundColor(Color.labelColor) // ここで使える
    .background(Color.backgroundColor)
}

UIColorHexを使う場合

Color SetではなくColorHexを使って色を管理したい場合は以下のように実装します。

import UIKit

// そのままコピペでOK
extension UIColor {
    convenience init(hex: String, alpha: CGFloat = 1.0) {
        let v = Int("000000" + hex, radix: 16) ?? 0
        let r = CGFloat(v / Int(powf(256, 2)) % 256) / 255
        let g = CGFloat(v / Int(powf(256, 1)) % 256) / 255
        let b = CGFloat(v / Int(powf(256, 0)) % 256) / 255
        self.init(red: r, green: g, blue: b, alpha: min(max(alpha, 0), 1))
    }
}

// 使う時
label.textColor = UIColor(hex: "<#カラーコード#>")