2012-03-11 10 views
9

虹の色全体に渡ってトランジションを持つ配列を設定しています。今は手作業で色を入力したばかりですが、手動で入力するには多すぎます...今のところ、0.25から0.5、0.75から1などになります。赤から緑、青まで帰ってきた。 (以下のコードを参照してください)どのように配列を自動的に0.25 - > 0.5 - > 0.75以上、おそらく0.05 - > 0.10 - > 0.15 - > 0.20以上の色で生成させることができますか?ここで私の配列は:iOSの虹色の配列

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を追加します。