单击按钮时如何随机显示三种颜色?

时间:2013-03-01 01:26:20

标签: iphone objective-c button uilabel uicolor

单击按钮时,我一直尝试使用屏幕上的标签显示三种随机颜色。

-(IBAction)spinButton:(id)sender;
{
    NSLog(@"Spin started.");


    NSLog(@"Message");
    NSLog(@"Message %@", nsString);


    printf("%s\n", [@"Button Press" UTF8String]);
    printf("%s %d %d %d\n", [@"Color: " UTF8String], wheelLeftColor, wheelMiddleColor, wheelRightColor);

    wheelLeftColor.backgroundColor = [UIColor colorWithRed: 0.9 green: 0.9 blue: 0.6 alpha: 1.0];
    wheelMiddleColor.backgroundColor = [UIColor colorWithRed: 0.9 green: 0.3 blue: 0.6 alpha: 1.0];
    wheelRightColor.backgroundColor = [UIColor colorWithRed: 0.5 green: 0.6 blue: 0.3 alpha: 1.0];
[NSString stringWithFormat:@"%d", int_num]


time_t seed = time(0);
srandom((int)seed);

int num = random() % 3;

我不确定如何使这项工作。我有一个想法,但不知道如何实现它, 在action方法中,传递标签对象和颜色代码 这里的问题是如何使用int存储值1 - 3来表示每个轮子的颜色? 提前致谢

2 个答案:

答案 0 :(得分:2)

尚未测试但应该可以使用。

- (UIColor *)randomColor
{
    return [UIColor colorWithRed:[self randomColorComponentValue] green:[self randomColorComponentValue] blue:[self randomColorComponentValue] alpha:1];
}

- (CGFloat)randomColorComponentValue
{
     CGFloat random = (CGFloat)arc4random()%255;
     return random/255.0f;
}

- (IBAction)spinButton:(id)sender
{
    wheelLeftColor.backgroundColor = [self randomColor];
    wheelMiddleColor.backgroundColor = [self randomColor];
    wheelRightColor.backgroundColor = [self randomColor];
}

答案 1 :(得分:0)

奥斯卡的答案也相同且更加详细。但是这里有一个简洁的方法。

-(UIColor *)randomCOlor{

   return [UIColor colorWithRed:(arc4Random()%10)/10.0f green:(arc4Random()%10)/10.0f blue:(arc4Random()%10)/10.0f alpha:1];

}

所以

UIColor *someColor = [self randomColor];

<强>更新 如果要从预定义的值中选择随机颜色,可以使用belo代码:

color1,color2,color3为三(根据您的要求任意数字)UIColor对象。然后你可以选择一个像下面这样的随机值,并在延迟3s之后设置标签的颜色:

NSArray *colorArray = [NSArray arrayWithObjects:color1,color2,color3,nil];
NSInteger index = arc4random()%[colorArray count];
UIColor *selColor = [colorArray objecatAtIndex:index-1];

然后传递此颜色对象和标签对象,如问题中所述,以设置颜色。

您可以在延迟后使用performSelector:withObject:withDelay:来调用方法。