iOS中的随机颜色

我想在每次加载Navbar时使其颜色不同。 我在viewDidApear中放置了以下代码:

CGFloat hue = ( arc4random() % 256 / 256.0 ); // 0.0 to 1.0 CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5; // 0.5 to 1.0, away from white CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5; // 0.5 to 1.0, away from black UIColor *color = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1]; self.navigationBar.barTintColor = color; 

问题是颜色范围太宽。

我希望它只选择你在这张照片中看到的颜色:

在此处输入图像描述

是否可以使用此代码? +如果不是我将如何创建一个类似的,从我定义的几个选择随机颜色。

谢谢你的帮助。

这是使用您的确切颜色的复制/粘贴解决方案。

 // Declare somewhere in your code typedef struct _Color { CGFloat red, green, blue; } Color; static Color _colors[12] = { {237, 230, 4}, // Yellow just to the left of center {158, 209, 16}, // Next color clockwise (green) {80, 181, 23}, {23, 144, 103}, {71, 110, 175}, {159, 73, 172}, {204, 66, 162}, {255, 59, 167}, {255, 88, 0}, {255, 129, 0}, {254, 172, 0}, {255, 204, 0} }; - (UIColor *)randomColor { Color randomColor = _colors[arc4random_uniform(12)]; return [UIColor colorWithRed:(randomColor.red / 255.0f) green:(randomColor.green / 255.0f) blue:(randomColor.blue / 255.0f) alpha:1.0f]; } 

注意 :您应该使用arc4random_uniform()而不是arc4random()来避免模偏差(尽管在这种情况下不是那么重要)。

的UIColor

这是以下代码:

 -(UIColor *)randomColor { CGFloat hue = ( arc4random() % 256 / 256.0 ); CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5; CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5; UIColor *color = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1]; return color; } 

这样就可以了:

 NSArray *hues = @[ @76, @98, @160, @217, @292, @318, @327, @21, @30, @41, @48, @58 ]; NSNumber *hue = hues[arc4random_uniform(hues.count)]; UIColor *color = [UIColor colorWithHue:[hue doubleValue] / 360.0 saturation:1.0 brightness:1.0 alpha:1.0]; 

谢谢@Rmaddy