【问题标题】:init(colorLiteralRed:,green:,blue:,alpha:) deprecated in Swift 4init(colorLiteralRed:,green:,blue:,alpha:) 在 Swift 4 中已弃用
【发布时间】:2018-01-03 19:51:38
【问题描述】:
let startingColorOfGradient = UIColor(colorLiteralRed: 255/255, green: 
255/255, blue: 255/255, alpha: 1.0).cgColor
let endingColorOFGradient = UIColor(colorLiteralRed: 251/255, green: 
247/255, blue: 234/255, alpha: 1.0).cgColor
let gradient: CAGradientLayer = CAGradientLayer()

错误:

'init(colorLiteralRed:green:blue:alpha:)' 在 Swift 4.0 (Swift._ExpressibleByColorLiteral) 中已过时

如果 init(colorLiteralRed:,green:,blue:,alpha:) 在 Swift 4 中被弃用,我该如何使用渐变色?

【问题讨论】:

    标签: uicolor swift4


    【解决方案1】:

    init(colorLiteralRed:green:blue:alpha:) 旨在与由开发工具管理的颜色文字一起使用。

    你为什么不使用普通的init(red:green:blue:alpha:)

    let startingColorOfGradient = UIColor(red: 255.0/255.0, green:
        255.0/255.0, blue: 255.0/255.0, alpha: 1.0).cgColor
    let endingColorOFGradient = UIColor(red: 251.0/255.0, green:
        247.0/255.0, blue: 234.0/255.0, alpha: 1.0).cgColor
    let gradient: CAGradientLayer = CAGradientLayer()
    

    (写成234.0/255.0 不是强制性的,在Swift 中的上述上下文中。但它会阻止Swift 编译器将234/255 解释为在某些其他上下文中的整数除法。)

    【讨论】:

    【解决方案2】:

    您可以简单地使用 UIColor 类的以下方法来实例化红色、绿色、蓝色、Alpha 的颜色。

    注意:Red、Green、Blue 和 Alpha 的值范围为 0 到 1。

    let colorStart = UIColor(red:0.1 , green: 0.2, blue: 0.5, alpha: 1.0)
    let colorEnd = UIColor(red:0.21 , green: 0.32, blue: 0.15, alpha: 1.0)
    
    func createGradientLayer() {
         gradientLayer = CAGradientLayer()
         gradientLayer.frame = self.view.bounds
         gradientLayer.colors = [colorStart.CGColor, colorEnd.CGColor]
         self.view.layer.addSublayer(gradientLayer)
    }
    

    要创建渐变层,您可以参考

    https://www.appcoda.com/cagradientlayer/

    【讨论】:

      【解决方案3】:

      另一种方式:https://developer.apple.com/documentation/uikit/uicolor/1621925-init

      init(displayP3Red: CGFloat, 绿色: CGFloat, 蓝色: CGFloat, alpha: CGFloat)

      使用 Display P3 颜色空间中指定的不透明度和 RGB 分量值初始化并返回一个颜色对象。

      您可以使用displayP3Red 代替colorLiteralRed

      let startingColorOfGradient = UIColor(displayP3Red: 255/255, green: 255/255, blue: 255/255, alpha: 1.0).cgColor
      let endingColorOFGradient = UIColor(displayP3Red: 251/255, green: 247/255, blue: 234/255, alpha: 1.0).cgColor
      let gradient: CAGradientLayer = CAGradientLayer()
      

      【讨论】:

        【解决方案4】:

        你可以使用

        UIColor(red: CGFloat(255.0), green: CGFloat(255.0), blue: CGFloat(255.0), alpha: CGFloat(255.0))
        

        【讨论】:

          猜你喜欢
          • 2021-12-20
          • 1970-01-01
          • 2021-02-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多