我需要根据用户名/名称/任意字符串以伪随机一致方式分配用户配置文件颜色。
如何在目标C iOS 7中执行此操作?
基于Java的示例在这里
答案 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];
}
它创造了更饱和但足够明亮和美丽的色彩。