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

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

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

【问题讨论】:

    标签: swift assets uicolor


    【解决方案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)" 让我快速检查并更新您的信息
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-03
          • 2021-11-05
          • 2019-02-23
          • 2013-05-12
          • 1970-01-01
          • 2016-09-22
          相关资源
          最近更新 更多