如何在 Swift 中为资产颜色设置 alpha

How to set alpha for an Assets Color in Swift

我只是想知道如何更改我拥有的资源颜色的不透明度 (alpha)。当我尝试此 UIColor(named: "something", alpha: 0.4) 时,Xcode 抱怨:Extra argument 'alpha' in call.

有什么方法可以通过编程方式修改资产颜色的不透明度吗?

您可以从这里修改资产颜色 Select 该特定资产颜色和 向左或向右拖动不透明度指示器或直接设置一些值

使用此扩展从 UIColor 获取 rgb 值

extension UIColor {
    var rgba: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
        var red: CGFloat = 0
        var green: CGFloat = 0
        var blue: CGFloat = 0
        var alpha: CGFloat = 0
        getRed(&red, green: &green, blue: &blue, alpha: &alpha)

        return (red, green, blue, alpha)
    }
}

然后你可以创建一个新的颜色

let assetColor = UIColor(named: "something")
let (r,g,b,_) = assetColor.rgba
let newColor = UIColor(red:r, green:g, blue:b, alpha: 0.4)

您可以为 UIColor 添加此扩展程序并且易于使用。

extension UIColor {
    convenience init?(named: String, alpha: CGFloat) {
        if let rgbComponents = UIColor(named: named)?.cgColor.components {
            self.init(red: rgbComponents[0], green: rgbComponents[1], blue: rgbComponents[2], alpha: alpha)
        } else {
            self.init(named: named)
        }
    }
}

用法:

let colorWithAlpha = UIColor(named: "Assets Color", alpha: 0.5)

您可以在分配颜色时设置颜色 Alpha 分量,如下所示:

button.backgroundColor = .black.withAlphaComponent(0.5)

UIColor,如 Jasur S. 所述,具有 withAlphaComponent(_:).

它可以与任何 UIColor 对象一起使用来修改它的 alpha:

let color = UIColor(named: "something")?.withAlphaComponent(0.5)

创建自定义扩展以覆盖现有功能是一个有争议的好事。