首页 > 解决方案 > 如何在 Swift 中将 Color Literal 转换为 cgColor?

问题描述

var CodeBackground = #colorLiteral(red: 0.1294117647, green: 0.1294117647, blue: 0.1960784314, alpha: 1)

cells?.layer.borderColor = //... how can i set this color literal to cgColor?

据我所知,如何在 Swift 中将该 UIColor 转换为 cgColor

例如

UIColor.black.cgColor

宾果游戏,但是 Swift 中的颜色文字到 cgColor 呢?

谢谢你。

标签: swiftuitableviewuicolorcgcolor

解决方案


  • 作为,您已经知道使用colorLiteralas的更简单方法cgcolor,我将跳到另一种方法......
  • 为此,您需要一个自定义函数,它从 中获取颜色值(红色、绿色、蓝色)colorLiteral,如下所示

    extension UIColor {
        func rgb() -> (red:Int, green:Int, blue:Int, alpha:Int)? {
        var fRed : CGFloat = 0
        var fGreen : CGFloat = 0
        var fBlue : CGFloat = 0
        var fAlpha: CGFloat = 0
        if self.getRed(&fRed, green: &fGreen, blue: &fBlue, alpha: &fAlpha) {
            let iRed = Int(fRed * 255.0)
            let iGreen = Int(fGreen * 255.0)
            let iBlue = Int(fBlue * 255.0)
            let iAlpha = Int(fAlpha)
    
            _ = (iAlpha << 24) + (iRed << 16) + (iGreen << 8) + iBlue
            return (red:iRed, green:iGreen, blue:iBlue, alpha:iAlpha)
        } else {
            // Could not extract RGBA components:
            return nil
        }
    }
    }
    //It's more convenient to use function in `UIColor` extension
    
  • 现在,创建此函数后,您可以转换colorliteralcgColor如下...

    let CodeBackground = #colorLiteral(red: 0.1294117647, green: 0.1294117647, blue: 0.1960784314, alpha: 1)
    let rgblit = CodeBackground.rgb()
    let Converted_cgColor = CGColor(srgbRed: CGFloat(integerLiteral: rgblit!.red), green: CGFloat(integerLiteral: rgblit!.green), blue: CGFloat(integerLiteral: rgblit!.blue), alpha: CGFloat(integerLiteral: rgblit!.alpha))
    
  • 可以直接使用Converted_cgColorlike

    cells?.layer.borderColor = Converted_cgColor
    

希望能帮助到你


推荐阅读