0

これは数学の質問ですが、運が悪いだけです。基本的に、colors配列で同等の行に応じてセルの色を変更する以下のコードを取得しました。それはすべて非常にうまく機能しますが、明るさのスペクトルの下端をなんとかして切り取って、0.2未満になることのないようにしたいと思います。これを解決する方法についての提案をいただければ幸いです。

-(IBAction)reloadTable {
    float arrayCount = [masterListArray count];
    float increment = (1.0 / arrayCount);
    NSMutableArray *tempColor = [[NSMutableArray alloc]init];
    colors = [[NSMutableArray alloc]init];

    for (float brightness = 0.0; brightness < 1.0; brightness += increment) {
        UIColor *color = [UIColor colorWithHue:50.0f/255.0f
                                    saturation:1.0
                                    brightness:brightness
                                         alpha:1.0];
       [tempColor addObject:color];
       NSLog(@"brightness: %f", brightness);
    }

    colors = [[tempColor reverseObjectEnumerator] allObjects];
    [self.tableView reloadData];
}
4

1 に答える 1

0

いくつかの追加の変数を使用して、常に1.0とボトムエンドの間に収まるようにすることができます。以下のコードでは、セルの数を使用して反復処理し(以前よりも優れた方法で)、明るさ1.0で開始し、下端で終了します。また、tempColorsを使用する必要はありません。

-(IBAction)reloadTable {

    float arrayCount = [masterListArray count];
    float bottomEnd = 0.2;
    float brightnessRange = 1.0 - bottomEnd;
    float increment = (brightnessRange / arrayCount);

    colors = [NSMutableArray array];

    for (int i = 0; i < arrayCount; i++) {
        // We start with light and go darker per cell.
        float brightness = bottomEnd + (brightnessRange - i * increment); 
        UIColor *color = [UIColor colorWithHue:50.0f/255.0f
                                    saturation:1.0
                                    brightness:brightness
                                         alpha:1.0];
        [colors addObject:color];
        NSLog(@"brightness: %f", brightness);
    }

    [self.tableView reloadData];
}
于 2012-12-05T14:47:16.350 に答える