首页 > 解决方案 > 如何根据 Hashtag Value 或 Hex Color Code 为按钮背景提供颜色,就像它曾经在 Objective-C 中一样?

问题描述

互联网上的每篇文章都建议我使用 RGB。但是,我想使用 Apple 的绿色调色板,我在冒险中是徒劳的。我知道它是标签值,但是由于我不知道在视图控制器文件中使用它的适当方法,因此无法在模拟器上呈现它。

从那以后,我已经能够使用Color Literal渲染所需的颜色,但是学习永远不会结束。而且,我想知道它的编码方式!

self.buttonStart.backgroundColor = UIColor(?)

? : 我应该在上述括号内放什么来完成我的任务。有什么建议么?

标签: iosswift

解决方案


您可以从十六进制字符串值实例化 a UIColor,如下所示 -

public extension UIColor {
    
    static func from(hexString: String) -> UIColor {
        var cleanString = hexString.replacingOccurrences(of: "#", with: "")
        
        if cleanString.count == 3 {
            var updatedString = ""
            cleanString.forEach({ updatedString.append("\($0)\($0)") })
            cleanString = updatedString
        }
        
        if cleanString.count == 6 {
            cleanString = cleanString.appending("ff")
        }
        
        var baseValue: UInt32 = 0
        Scanner(string: cleanString).scanHexInt32(&baseValue)
        
        let red = CGFloat((baseValue >> 24) & 0xFF)/255.0
        let green = CGFloat((baseValue >> 16) & 0xFF)/255.0
        let blue = CGFloat((baseValue >> 8) & 0xFF)/255.0
        let alpha = CGFloat((baseValue >> 0) & 0xFF)/255.0
        
        return UIColor(red: red, green: green, blue: blue, alpha: alpha)
    }
    
}

现在从您的代码中,您可以像下面这样调用它 -

self.buttonStart.backgroundColor = UIColor.from(hexString: "#AABBCC")

推荐阅读