如何将任意数量的固定数字(例如10位数)转换为RGB或Hex颜色代码?

时间:2017-03-16 05:06:58

标签: ios swift3 uicolor

我想根据用户的ID创建颜色代码。我想为每个用户分配颜色。

实际上,我正在开放聊天功能,任何人都可以聊天。我想为每个用户分配动态颜色。有没有办法将用户ID转换为颜色代码或任何其他方式来实现这一目标?

2 个答案:

答案 0 :(得分:0)

我认为您应该首先定义颜色列表。 1 - >例如30种颜色。然后只获取userId%30作为将分配给用户的颜色

答案 1 :(得分:0)

将用户ID从0添加到FFFFFF(0到16777215) 然后你可以使用这个宏:

#define UIColorFromHEX(rgbValue) ([UIColor colorWithRed:((float) ((rgbValue & 0xFF0000) >> 16)) / 255.0 \
                                                    green:((float) ((rgbValue & 0x00FF00) >> 8)) / 255.0 \
                                                     blue:((float) ((rgbValue & 0x0000FF) >> 0)) / 255.0 \
                                                    alpha:1.0])
像这样:

UIColor *color = UIColorFromHEX(13094098) //or 0xC7CCD2

抱歉,上面的代码是[objective-c],这在swift中是相同的:

convenience init(red: Int, green: Int, blue: Int) {
        assert(red >= 0 && red <= 255, "Invalid red component")
        assert(green >= 0 && green <= 255, "Invalid green component")
        assert(blue >= 0 && blue <= 255, "Invalid blue component")

        self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0)
    }

    convenience init(netHex:Int) {
        self.init(red:(netHex >> 16) & 0xff, green:(netHex >> 8) & 0xff, blue:netHex & 0xff)
    }