使用扩展将十六进制转换为UIColor

时间:2016-01-18 02:12:13

标签: ios swift hex uicolor

我发现使用十六进制代码文件定义颜色比rgba更容易,所以我研究了如何使用十六进制代码到UIColor的转换器。我首先创建了一个名为UIColorUtility的新文件并添加了:

import Foundation
import UIKit

extension UIColor {
    public convenience init?(hexString: String) {
        let r, g, b, a: CGFloat

        if hexString.hasPrefix("#") {
            let start = hexString.startIndex.advancedBy(1)
            let hexColor = hexString.substringFromIndex(start)

            if hexColor.characters.count == 8 {
                let scanner = NSScanner(string: hexColor)
                var hexNumber: UInt64 = 0

                if scanner.scanHexLongLong(&hexNumber) {
                    r = CGFloat((hexNumber & 0xff000000) >> 24) / 255
                    g = CGFloat((hexNumber & 0x00ff0000) >> 16) / 255
                    b = CGFloat((hexNumber & 0x0000ff00) >> 8) / 255
                    a = CGFloat(hexNumber & 0x000000ff) / 255

                    self.init(red: r, green: g, blue: b, alpha: a)
                    return
                }
            }
        }

        return nil
    }
}

然后在我的viewController中,我试图改变这个位

.SelectionIndicatorColor(UIColor(red: 0.8, green: 0.153, blue: 0.106, alpha: 1.0)),

进入此出价:

.SelectionIndicatorColor(UIColor(hexString: "#929292"))!,

它首先强迫我打开它,然后开始给我错误..

  

如果没有更多的上下文,表达的类型是不明确的

我做错了什么?另外,出于好奇,我怎样才能在应用hexString方法后设置alpha?

0 个答案:

没有答案