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

Posted

技术标签:

【中文标题】如何在 Swift 中为资产颜色设置 alpha【英文标题】:How to set alpha for an Assets Color in Swift 【发布时间】:2022-01-03 10:32:52 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

UIColor,正如 Jasur S. 所提到的,拥有withAlphaComponent(_:)

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

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

创建自定义扩展来覆盖现有功能是一个值得商榷的好处。

【讨论】:

【参考方案2】:

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

button.backgroundColor = .black.withAlphaComponent(0.5)

【讨论】:

【参考方案3】:

你可以为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)

【讨论】:

【参考方案4】:

使用此扩展从 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)

【讨论】:

看起来很有希望!请给我一分钟左右的时间检查一下...【参考方案5】:

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

【讨论】:

我可以通过编程方式完成吗? 在 SwiftUI 中,我们可以像这样以编程方式执行 ".foregroundColor(.accentColor).opacity(0.3)" 让我快速检查并更新您的信息

以上是关于如何在 Swift 中为资产颜色设置 alpha的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Matlab 中为绘图的特定 x 值设置背景颜色?

在 Swift 中为选定的 UIPickerView 行设置动画背景颜色

在 iOS8/Swift 中为 UIDatePicker 设置文本颜色和字体

UIView的不透明alpha和背景颜色之间有什么关系?

swift - label 的font 设置 文字字体和大小

如何在 Qt 中为 SRGB 颜色空间创建 QColor 对象?