0

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

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

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

4

2 回答 2

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];
}
于 2013-03-01T01:37:56.533 回答
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 对象。然后您可以选择如下所示的随机值,并在延迟 3 秒后设置标签的颜色:

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

然后像问题中提到的那样传递这个颜色对象和标签对象来设置颜色。

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

于 2013-03-01T02:48:15.563 回答