在Objective c ios 7中计算任意字符串的十六进制颜色代码

时间:2014-08-15 23:02:36

标签: objective-c random colors hex

我需要根据用户名/名称/任意字符串以伪随机一致方式分配用户配置文件颜色。

如何在目标C iOS 7中执行此操作?

基于Java的示例在这里

Compute hex color code for an arbitrary string

2 个答案:

答案 0 :(得分:5)

可能有很多方法。这是一个:

NSString *someString = ... // some string to "convert" to a color
NSInteger hash = someString.hash;
int red = (hash >> 16) & 0xFF;
int green = (hash >> 8) & 0xFF;
int blue = hash & 0xFF;
UIColor *someColor = [UIColor colorWithRed:red / 255.0 green:green / 255.0 blue:blue / 255.0 alpha:1.0];

相同的字符串将始终提供相同的颜色。不同的字符串通常会给出不同的颜色,但两个不同的字符串可能会产生相同的颜色。

答案 1 :(得分:0)

我的版本:

+ (UIColor *)colorForString:(NSString *)string
{
    NSUInteger hash = string.hash;

    CGFloat hue = ( hash % 256 / 256.0 );  //  0.0 to 1.0
    CGFloat saturation = ( hash % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from white
    CGFloat brightness = ( hash % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from black

    return [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];
}

它创造了更饱和但足够明亮和美丽的色彩。