2012-03-11 5 views
9

Я настраиваю массив, который имеет переход по всему цвету радуги. Прямо сейчас я только вручную ввел цвета в массиве, но их слишком много, чтобы вручную набрать ... теперь я просто перехожу от 0,25 до 0,5 до 0,75 в 1 и так далее, пока не перейду от красного к зеленому до синего и назад. (см. код ниже), как я могу заставить массив автоматически генерировать цвета с более чем 0,25 -> 0,5 -> 0,75, но, возможно, 0,05 -> 0,10 -> 0,15 -> 0,20 и так далее, ... вот мой массив:iOS rainbow colors array

rainbowColors = [[NSArray alloc] initWithObjects: 
        [UIColor colorWithRed:1 green:0 blue:0 alpha:1], 
        [UIColor colorWithRed:1 green:0.25 blue:0 alpha:1], 
        [UIColor colorWithRed:1 green:0.5 blue:0 alpha:1], 
        [UIColor colorWithRed:1 green:0.75 blue:0 alpha:1], 
        [UIColor colorWithRed:1 green:1 blue:0 alpha:1], 
        [UIColor colorWithRed:0.75 green:1 blue:0 alpha:1], 
        [UIColor colorWithRed:0.5 green:1 blue:0 alpha:1], 
        [UIColor colorWithRed:0.25 green:1 blue:0 alpha:1], 
        [UIColor colorWithRed:0 green:1 blue:0 alpha:1], 
        [UIColor colorWithRed:0 green:1 blue:0.25 alpha:1], 
        [UIColor colorWithRed:0 green:1 blue:0.5 alpha:1], 
        [UIColor colorWithRed:0 green:1 blue:0.75 alpha:1], 
        [UIColor colorWithRed:0 green:1 blue:1 alpha:1], 
        [UIColor colorWithRed:0 green:0.75 blue:1 alpha:1], 
        [UIColor colorWithRed:0 green:0.5 blue:1 alpha:1], 
        [UIColor colorWithRed:0 green:0.25 blue:1 alpha:1], 
        [UIColor colorWithRed:0 green:0 blue:1 alpha:1], 
        [UIColor colorWithRed:0.25 green:0 blue:1 alpha:1], 
        [UIColor colorWithRed:0.5 green:0 blue:1 alpha:1], 
        [UIColor colorWithRed:0.75 green:0 blue:1 alpha:1], 
        [UIColor colorWithRed:1 green:0 blue:1 alpha:1], 
        [UIColor colorWithRed:1 green:0 blue:0.75 alpha:1], 
        [UIColor colorWithRed:1 green:0 blue:0.5 alpha:1], 
        [UIColor colorWithRed:1 green:0 blue:0.25 alpha:1],nil]; 

ответ

39

гораздо проще, использовать -[UIColor colorWithHue:saturation:brightness:alpha:], например, так:

NSMutableArray *colors = [NSMutableArray array]; 

float INCREMENT = 0.05; 
for (float hue = 0.0; hue < 1.0; hue += INCREMENT) { 
    UIColor *color = [UIColor colorWithHue:hue 
           saturation:1.0 
           brightness:1.0 
            alpha:1.0]; 
    [colors addObject:color]; 
} 

Это позволяет изменять оттенок (или цвет), не изменяя, как яркий цвет на экране, который вы, вероятно, не сохраняя прямо сейчас. Это также намного проще писать и гораздо яснее для более позднего читателя.

+0

Простой, чистый и дает правильные результаты. Отличный ответ. –

+0

Замечательно! Спасибо!! –

+1

Так много волшебных пачек вместе ... это сделало мой день, СПАСИБО! –

1

3 Вложенные петли и 3 переменные r, g, b и добавляют 0.25 каждый раз при возникновении цикла.