如何在 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的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中为选定的 UIPickerView 行设置动画背景颜色
在 iOS8/Swift 中为 UIDatePicker 设置文本颜色和字体