как выбрать случайный цвет из метода с меткой и цветными объектами?

Пытаясь запустить случайные цвета из трех определяемых свойств цвета,

int num1 = rand() %3;
color1= [UIColor colorWithRed:0.5/num1 green:0.7/num1 blue:0.5/num1 alpha:1.0];
[self setColor:color1 setLabel:label1];

int num2 = rand() %3;
color2 = [UIColor colorWithRed:0.5/num2 green:0.7/num2 blue:0.5/num2 alpha:1.0];
[self setColor:color2 setLabel:label2];

int num3 = rand() %3;
color3= [UIColor colorWithRed:0.5/num3 green:0.7/num3 blue:0.5/num3 alpha:1.0];
[self setColor:color3 setLabel:label3];

пытаясь сгенерировать случайные цвета из объекта цвета, объекта метки.

Хотите поместить random() для всей переменной цвета, а не только для свойств. Как я могу это сделать. заранее спасибо


person user2038249    schedule 05.03.2013    source источник
comment
возможный дубликат генератора случайных чисел Objective-C   -  person Claus Jørgensen    schedule 05.03.2013


Ответы (3)


Вы должны изменять значения rgb случайным образом....

color1= [self getRandomColor];                
[self setColor:color1 setLabel:firstColorObject];
color2 = [self getRandomColor];;
[self setColor:color2 setLabel:secondColorObject];
color3= [self getRandomColor];
[self setColor:color3 setLabel:thirdColorObject];

Определение метода:

-(UIColor *)getRandomColor{
    UIColor *color;
    float randomRed = rand()%3;//3:you can write any number as you wish...
    float randomGreen =rand()%2;//2:you can write any number as you wish...
    float randomBlue =rand()%4;//4:you can write any number as you wish...
    color= [UIColor colorWithRed:randomRed green:randomGreen blue:randomBlue alpha:1.0];
    return color;
}
person Prasad G    schedule 05.03.2013
comment
Я получаю 9 разных цветов, когда я устанавливаю random()%3;, но мне нужно только 3 цвета, случайным образом перемещающиеся по 3 меткам. - person user2038249; 05.03.2013

РЕДАКТИРОВАТЬ: (для iOS)

-(NSDictionary *)randomColorAndLabel{
    UIColor *color1= [UIColor colorWithRed:0.2 green:0.4 blue:0.3 alpha:1.0];
    UIColor *color2= [UIColor colorWithRed:0.3 green:0.4 blue:0.3 alpha:1.0];
    UIColor *color3= [UIColor colorWithRed:0.4 green:0.4 blue:0.3 alpha:1.0];

    NSDictionary *colorDict1=@{@"color1" : color1};
    NSDictionary *colorDict2=@{@"color2" : color2};
    NSDictionary *colorDict3=@{@"color3" : color3};

    NSArray *colors=@[colorDict1, colorDict2, colorDict3];

    NSInteger randomNumber=arc4random()%3;

    return colors[randomNumber];
}

который возвращает словарь с цветом и именем, которые вы можете использовать для метки.


Ранее решено для OSX

Я решил для OSX с NSColor вместо UIColor и имя метода изменено как

colorWithRed:randomRed green:randomGreen blue:randomBlue alpha:1.0];

-(NSDictionary *)randomColorAndLabel{
    NSColor *color1= [NSColor colorWithCalibratedRed:0.2 green:0.4 blue:0.3 alpha:1.0];
    NSColor *color2 = [NSColor colorWithCalibratedRed:0.3 green:0.4 blue:0.3 alpha:1.0];
    NSColor *color3= [NSColor colorWithCalibratedRed:0.4 green:0.4 blue:0.3 alpha:1.0];

    NSDictionary *colorDict1=@{@"color1" : color1};
    NSDictionary *colorDict2=@{@"color2" : color2};
    NSDictionary *colorDict3=@{@"color3" : color3};

    NSArray *colors=@[colorDict1, colorDict2, colorDict3];

    NSInteger randomNumber=arc4random()%3;

    return colors[randomNumber];
}

это возвращает словарь с именем и цветом.

person Anoop Vaidya    schedule 05.03.2013
comment
как мне объявить идентификатор NSColor, он говорит, что это недопустимое объявление. Спасибо - person user2038249; 05.03.2013
comment
@ user2038249: Как я уже сказал, он закодирован для OSX. прочитайте первые две строчки ответа. Измените NSColor на UIColor и измените colorWithCalibratedRed: на colorWithRed: - person Anoop Vaidya; 05.03.2013
comment
Привет, Ануп: почему я получаю эту ошибку - person Dipendra; 05.03.2013
comment
NSDictionary *colorDict2=@{@color2 : color2}; ОШИБКА Ожидается ';'после декларатора верхнего уровня' - person Dipendra; 05.03.2013
comment
как насчет NSDictionary *colorDict1=@{@"color1" : color1}; ? прокомментируйте следующие 2 строки и проверьте. - person Anoop Vaidya; 05.03.2013
comment
@AnoopVaidya: я обновил код, пытаясь упростить его, используя свойства цвета. Пожалуйста, дайте мне знать, могу ли я рандомизировать переменную цвета, а не только каждое свойство красного, зеленого, синего цвета. - person user2038249; 07.03.2013

Finlay Я нашел решение для случайного цвета

Просто используйте код ниже

- (UIColor *)getRandomColor {

    srand48(arc4random());

    float red = 0.0;
    while (red < 0.1 || red > 0.84) {
        red = drand48();
    }

    float green = 0.0;
    while (green < 0.1 || green > 0.84) {
        green = drand48();
    }

    float blue = 0.0;
    while (blue < 0.1 || blue > 0.84) {
        blue = drand48();
    }

    return [UIColor colorWithRed:red green:green blue:blue alpha:1.0f];
}

Пожалуйста, проверьте ссылку на цвет введите здесь описание изображения

person Vivek    schedule 01.08.2017