0

ボタンがクリックされたときに画面のラベルを使用して3つのランダムな色を表示しようとしています。

-(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メソッドで、labelオブジェクトとカラーコードを渡します。ここでの問題は、intを使用して各ホイールの色を示す値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];

更新: 事前定義された値からランダムな色を選択する場合は、次のコードを使用できます。

UIColorcolor1,color2,color3オブジェクトを 3 つ (要件に応じて任意の数) にします。次に、以下のようなランダムな値を選択し、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 に答える