如何选择十六进制格式或RGB格式的颜色,而不是使用Swift中给出的颜色

use*_*967 0 rgb xcode uicolor ios swift

我正在尝试将TopScoreContainer的背景颜色更改为更浅的绿色.我不想使用greenColor().这是代码行:

self.TopScoreContainer.backgroundColor = UIColor.greenColor()    
Run Code Online (Sandbox Code Playgroud)

是否可以用十六进制数字或RGB值代替greenColor()?谢谢.

Leo*_*bus 8

    let myCustomColorHSBa = UIColor(hue: 120/360, saturation: 0.25 , brightness: 1.0 , alpha: 1)
    let myCustomColorRGBa = UIColor(red: 191/255, green: 1, blue: 191/255, alpha: 1)
Run Code Online (Sandbox Code Playgroud)

使用它作为扩展只读计算var:

只读计算属性

具有getter但没有setter的计算属性称为只读计算属性.只读计算属性始终返回一个值,可以通过点语法访问,但不能设置为其他值.

注意

必须使用var关键字将计算属性(包括只读计算属性)声明为变量属性,因为它们的值不固定.let关键字仅用于常量属性,以指示一旦将它们设置为实例初始化的一部分,就无法更改它们的值.

您可以通过删除get关键字及其大括号来简化只读计算属性的声明:

extension UIColor {
    var lightGreen: UIColor {
        return UIColor(red: 191/255, green: 1, blue: 191/255, alpha: 1)
    }
}
let lightGreen = UIColor().lightGreen
Run Code Online (Sandbox Code Playgroud)

或者您也可以创建自己的htmlColor输入,如下所示:

更新:Xcode 7.2•Swift 2.1.1

extension String {
    subscript(range: Range<Int>) -> String {
        return range.startIndex < 0 || range.endIndex > characters.count ? "Out of Range" : substringWithRange(Range(start: startIndex.advancedBy(range.startIndex),end: startIndex.advancedBy(range.endIndex)))
    }
    var hexaCGFloat: CGFloat {
        return CGFloat(strtoul(self, nil, 16))
    }
}

extension UIColor {
    convenience init(htmlColor: String, alpha: Double) {
        self.init(red: htmlColor[1...2].hexaCGFloat / 255.0, green: htmlColor[3...4].hexaCGFloat / 255.0, blue: htmlColor[5...6].hexaCGFloat / 255.0, alpha: CGFloat(alpha)  )
    }
    convenience init(r: Int, g:Int , b:Int , a: Int) {
        self.init(red: CGFloat(r)/255, green: CGFloat(g)/255, blue: CGFloat(b)/255, alpha: CGFloat(a)/255)
    }
}
let myColor = UIColor(r: 255 , g: 0, b: 0, a: 255)
let myHtmlWebColor = UIColor(htmlColor: "#bfffbf", alpha: 1.0)
Run Code Online (Sandbox Code Playgroud)