Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS中的随机颜色_Ios_Objective C_Colors - Fatal编程技术网

iOS中的随机颜色

iOS中的随机颜色,ios,objective-c,colors,Ios,Objective C,Colors,我想让我的导航栏在每次加载时都有不同的颜色。我在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

我想让我的导航栏在每次加载时都有不同的颜色。我在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\u uniform()
而不是
arc4random()
,以避免模偏差(尽管在这种情况下并不那么重要)。

这就做到了:

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

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;
}

那些不是随机的颜色。这是12种特定的颜色。我的问题很糟糕,需要更好地定义。我想投票给你们答案,但被删除了。它起作用了,颜色不完全一样,但这对我来说是一个很好的开始。非常感谢。当我意识到这些颜色并不完全是我列出的颜色后,我删除了我的答案。无论如何,谢谢你!:)你知道我怎样才能找到正确的值吗?e、 我怎么知道照片中的绿色次级是什么?我会做其余的:)对不起,刚刚意识到这是一个多么愚蠢的问题色调值。非常感谢。你的解决办法奏效了!。非常感谢。我得到一个错误:(UIColor*)randomColor{行中有一个未清除的标识符randomColor。请确保
Color
struct和静态数组colors
\u colrors[12]
-(UIColor*)之前声明randomColor
方法。最好在文件顶部的某个位置。非常感谢您的帮助。我似乎无法使其正常工作。仍然存在相同的问题:/UnCleared identifier randomColor请确保其余代码是正确的(所有括号都在适当的位置,等等)。请尝试在代码中移动
randomColor
方法,以查看是否出现其他问题。我编译并运行了发布的解决方案代码,没有任何问题。是的,这就是问题所在(缺少括号)。很抱歉,我对编码一无所知。非常感谢!获得了2个有效的解决方案:)