1. ホーム
  2. ios

[解決済み] 指定された UIColor の明るい色と暗い色のバリエーションを取得する

2023-07-08 14:40:34

質問

Swiftで与えられたUIColorの異なる明るさと暗さのバリエーションを取得する方法は?

どのように解決するのですか?

更新

下記を使用 UIColor Extensionを使用します。

extension UIColor {

    func lighter(by percentage: CGFloat = 30.0) -> UIColor? {
        return self.adjust(by: abs(percentage) )
    }

    func darker(by percentage: CGFloat = 30.0) -> UIColor? {
        return self.adjust(by: -1 * abs(percentage) )
    }

    func adjust(by percentage: CGFloat = 30.0) -> UIColor? {
        var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0
        if self.getRed(&red, green: &green, blue: &blue, alpha: &alpha) {
            return UIColor(red: min(red + percentage/100, 1.0),
                           green: min(green + percentage/100, 1.0),
                           blue: min(blue + percentage/100, 1.0),
                           alpha: alpha)
        } else {
            return nil
        }
    }
}

使用方法です。

let color = UIColor(red:0.96, green:0.54, blue:0.10, alpha:1.0)
color.lighter(30) // returns lighter color by 30%
color.darker(30) // returns darker color by 30%

の代わりに .lighter() となり .darker() を使用することができます。 .adjust() で、正の値で明るく、負の値で暗くすることができます。

color.adjust(-30) // 30% darker color
color.adjust(30) // 30% lighter color

出力します。