Генерировать шестнадцатеричное число произвольного цвета в Objective C?

Как я генерирую произвольный цвет, шестнадцатеричный в Objective C?

Мне нужен цвет hexdecimal, мне не нужен произвольный цвет. Это сложно...

5
задан David Schenk 28 February 2013 в 07:21
поделиться

4 ответа

Думаю, вам подойдет. Arc4random () намного лучше с точки зрения производительности и ... точности, чем rand (). Rand () также необходимо засеять перед использованием.

// 16777215 is FFFFFF
NSInteger *baseInt = arc4random() % 16777216;
NSString *hex = [NSString stringWithFormat:@"%06X", baseInt];

Изменить: отредактировано на основе комментария относительно форматирования.

18
ответ дан 18 December 2019 в 06:34
поделиться

Вы можете использовать стандартную библиотечную подпрограмму C rand () в вашем приложении Objective-C. Затем вы захотите вызвать его три раза, чтобы получить случайные значения для каждого из красного, зеленого и синего каналов вашего случайного цвета. Вы захотите изменить (% ) значение на максимальное значение, которое может иметь канал - обычно 256. Отсюда вы можете соответствующим образом построить свой NSColor . Таким образом, ваш код может выглядеть примерно так:

int red = rand() % 255;
int green = rand() % 255;
int blue = rand() % 255;
NSColor* myColor = [NSColor colorWithCalibratedRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:1.0];

Поскольку NSColor принимает числа с плавающей запятой вместо целых, лучшим подходом было бы разделение случайных значений на RAND_MAX с самого начала:

float rand_max = RAND_MAX;
float red = rand() / rand_max;
float green = rand() / rand_max;
float blue = rand() / rand_max;
NSColor* myColor = [NSColor colorWithCalibratedRed:red green:green blue:blue alpha:1.0];

Этот последний код не ограничивает количество цветов до 24-битный спектр.

6
ответ дан 18 December 2019 в 06:34
поделиться

Есть статья о кокоадеве (включая примеры кода) о написании заставки - со случайными цветами:

0
ответ дан 18 December 2019 в 06:34
поделиться

Небольшое примечание:

В зависимости от ваших потребностей, возможно, вам стоит подумать о том, чтобы написать не совсем случайный генератор цветов. (Например, когда вы хотите установить "правила" для видимости генерируемых цветов). Поэтому возможно, что вам нужно получить код цвета, ограничив случайно сгенерированные значения в HSB.

0
ответ дан 18 December 2019 в 06:34
поделиться