如何在Swift中获得给定 colored颜色 的不同浅色和深色变化?

enter image description here

推荐答案

已更新

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
        }
    }
}

Usage:

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%

可以使用.adjust()来代替.lighter().darker(),其中正值表示变亮,负值表示变暗

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

Output:

enter image description here

Ios相关问答推荐

iOS中的分段拾取器—手柄点击已 Select 的项目

彩色进度线--SWIFT

在金属中设置纹理的UV坐标以编程方式变形纹理

在flatter_riverpod中,如果没有ref对象,我们如何访问提供程序?

Xcode 15中的版本控制发生了什么?

clang:错误:SDK 路径中不包含libarclite

iOS Swift 应用程序实例的存活时间

如何在集合视图中创建装饰视图?

@MainActor 类的扩展是主要演员吗?

在标签中显示多个计数器但在同一屏幕(Swift,IOS)

集成 IDNow SDK 时未找到 Xcode FLAnimatedImage.h 文件问题

如何在 SwiftUI 的列表中使用带有 swipeActions 的 NavigationLink

SignalR 永远不会在 iOS 上使用 Xamarin Forms 启动

如何在 Swift 3 中根据 UIImage 的大小/比率调整 UIImageView 的大小?

快速禁用 UITextfield 的用户输入

iPhone iOS 无法正确显示 box-shadow

UIView 和 initWithFrame 以及一个 NIB 文件.如何加载 NIB 文件?

从 WKWebView 获取所有 cookie

如何进行键值观察并在 UIView 的框架上获取 KVO 回调?

如何为 iOS 13 的 SF Symbols 设置权重?